方案 2:使用 ETW 跟踪分析程序示例
若要为 HTTP 服务器 API 组件生成 ETW 跟踪报告,请运行 方案 1:使用 ETW 跟踪和 Netsh 命令的 HTTP 超时示例的“生成 ETW 跟踪报告”部分所示的步骤,但重现特定于此方案的错误。 在此示例中,从客户端计算机访问 Web 应用程序,导致客户端上显示“400 错误请求”消息。 这些步骤在服务器上运行,因为它承载 Web 应用程序。
查看跟踪和诊断
可以在 Excel 或任何支持 CSV 格式的工具中查看生成的跟踪 CSV 文件。 下表 2 显示了示例跟踪文件 (httptrace.csv) 的摘录。 在跟踪报告中,“级别”列显示值为“2”的条目,表示错误。 如上所述,HTTP 服务器 API 组件遵循 LevelType 复杂类型复杂类型一文中定义的 ETW 级别。
ETW 级别包括:1 个严重;2 错误;3 警告;4 信息性;5 详细。
出现此错误时,事件类型 (Type 列) 报告“ParseRequestFailed”。 在 ParseRequestFailed 事件的后续列中,我们看到“InvalidHost”条目。 此项表示 HTTP 请求中标识的主机根据 HTTP 协议不正确。 请注意,表中不包含具有“InvalidHost”条目的列,为简洁起见并避免摘录非连续列。
若要解决此分析问题,应更正 Web 客户端以符合 HTTP RFC。
事件名称 | 类型 | 事件 ID | 版本 | 通道 | 级别 |
---|---|---|---|---|---|
EventTrace | 标头 | 0 | 2 | 0 | 0 |
Microsoft-Windows-HttpService | AddUrl | 31 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | ConnConnect | 21 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | ConnIdAssgn | 22 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | RecvReq | 1 | 0 | 16 | 4 |
Microsoft-Windows-HttpService | ParseRequestFailed | 52 | 0 | 16 | 2 |
Microsoft-Windows-HttpService | LogFileWrite | 51 | 0 | 16 | 4 |
表 2:分析问题的示例跟踪报告中的摘录