方案 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:分析问题的示例跟踪报告中的摘录