シナリオ 2: ETW トレースを使用したパーサーの例

HTTP Server API コンポーネントの ETW トレース レポートを生成するには、「 シナリオ 1: ETW トレースと Netsh コマンドを使用した HTTP タイムアウトの例」の「ETW トレース レポートの生成」セクションに示されている手順を実行しますが、このシナリオに固有のエラーを再現します。 この例では、クライアント コンピューターから Web アプリケーションにアクセスし、クライアントに "400 無効な要求" というメッセージが表示されます。 これらの手順は、Web アプリケーションをホストしているため、サーバー上で実行されます。

トレースの表示と診断

トレース用の結果の CSV ファイルは、Excel または CSV 形式をサポートする任意のツールで表示できます。 次の表 2 は、サンプル トレース ファイル (httptrace.csv) からの抜粋を示しています。 トレース レポートの "Level" 列には、エラーを表す値 "2" のエントリが表示されます。 前述のように、HTTP Server API コンポーネントは、 LevelType 複合型複合型に関する記事で定義されている ETW レベルに従います。

ETW レベルには次のものが含まれます。2 エラー。3 警告;4 情報;5 詳細。

このエラーにより、イベントの種類 (Type 列) は "ParseRequestFailed" を報告します。 ParseRequestFailed イベントの後続の列には、"InvalidHost" エントリが表示されます。 このエントリは、HTTP プロトコルに従って、HTTP 要求で識別されたホストが正しくないことを意味します。 簡潔にするために、および連続しない列の抜粋を避けるために、"InvalidHost" エントリを含む列がテーブルに含まれていないことに注意してください。

この解析の問題を解決するには、Web クライアントを HTTP RFC に準拠するように修正する必要があります。

イベント名 イベント ID バージョン チャネル Level
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: 解析の問題に関するサンプル トレース レポートからの抜粋