シナリオ 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: 解析の問題に関するサンプル トレース レポートからの抜粋