WinHTTP ログを使用してトラフィックの取得を確認する
汎用ホストとクライアントが成功しても、実際のホストとクライアントが失敗した場合は、メタデータ要求が開始されていない可能性があります。 WinHTTP ログを使用して、送信メッセージが生成され、正しく送信されていることを確認できます。
WSDAPI ベースのクライアント アプリケーションでは、 WinHTTP を使用してデバイスに接続します。 WSDAPI ベースのデバイス ホストは WinHTTP を使用しません。 また、一部のサードパーティ プロキシでは WinHTTP を使用しません。 WinHTTP を使用しないホストまたはプロキシのトラブルシューティングを行う場合は、この診断手順をスキップし、「HTTP メタデータExchangeのネットワーク トレースの検査」の手順に従ってトラブルシューティングを続行します。
WinHTTP ログには、すべての TCP レベルのトラフィックが表示されるわけではありません。 HTTP トラフィック以外のトラフィックが重要な場合は、HTTP メタデータExchangeのネットワーク トレースの検査にスキップします。
WinHTTP ログを使用してトラフィックの取得を確認するには
- WinHTTP ログをキャプチャします。
- メモ帳または任意のテキスト エディターを起動します。 テキスト エディターは管理者として実行する必要があります。
- WinHTTP ログ ファイルを開きます。
- 必要な HTTP 要求とメタデータ メッセージが送信されたことを確認します。
ホストの Get メッセージが WinHTTP ログで見つかった場合、メタデータ要求は WinHTTP に正常に送信されます。 HTTP メタデータ Exchangeのネットワーク トレースの検査の手順に従って、トラブルシューティングを続行します。
WinHTTP ログ内のホストに 対して Get メッセージが見つからない場合、メタデータ要求は開始されません。 これは、ホストが無効な XAddrs を発行するときに発生する可能性があります。 ホスト上の XAddrs が XAddr 検証規則に準拠していることを確認します。
必要な HTTP 要求とメタデータ メッセージが送信されたことを確認する
メタデータ交換を成功させるには、次のイベントが発生する必要があります。
- WSDAPI クライアントは、送信 HTTP 要求を生成します。 この要求は WSDAPI ホストに送信されます。
- クライアントは Get メッセージをホストに送信します。
これらのイベントは、WinHTTP ログにキャプチャされます。
次の WinHTTP ログ ファイル スニペットは、WSDAPI クライアントによって生成された送信 HTTP 要求を示しています。
16:51:47.893 ::*0000004* :: WinHttpSendRequest(0x36aae0, "", 0, 0x0, 0, 658, 0)
16:51:47.893 ::*0000004* :: WinHttpSendRequest() returning TRUE
16:51:47.897 ::*0000004* :: sending data:
16:51:47.897 ::*0000004* :: 226 (0xe2) bytes
16:51:47.897 ::*0000004* :: <<<<-------- HTTP stream follows below ----------------------------------------------->>>>
16:51:47.897 ::*0000004* :: POST /dbe17c74-3b21-4f52-addc-b84b444f73a0 HTTP/1.1
16:51:47.897 ::*0000004* :: Content-Type: application/soap+xml
16:51:47.897 ::*0000004* :: User-Agent: WSDAPI
16:51:47.897 ::*0000004* :: Host: 192.168.0.1:5357
16:51:47.897 ::*0000004* :: Content-Length: 658
16:51:47.897 ::*0000004* :: Connection: Keep-Alive
16:51:47.897 ::*0000004* :: Cache-Control: no-cache
16:51:47.897 ::*0000004* :: Pragma: no-cache
16:51:47.897 ::*0000004* ::
16:51:47.897 ::*0000004* ::
16:51:47.897 ::*0000004* :: <<<<-------- End ----------------------------------------------->>>>
次の WinHTTP ログ ファイル スニペットは 、Get メッセージを示しています。 このメッセージは、HTTP 要求の直後に表示されます。
16:51:47.898 ::*0000004* :: WinHttpWriteData(0x36aae0, 0x11aa7c4, 658, 0x0)
16:51:47.899 ::*0000004* :: sending data:
16:51:47.899 ::*0000004* :: 658 (0x292) bytes
16:51:47.899 ::*0000004* :: <<<<-------- HTTP stream follows below ----------------------------------------------->>>>
16:51:47.899 ::*0000004* :: <?xml version="1.0" encoding="utf-8" ?>
16:51:47.899 ::*0000004* :: <soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="https://schemas.xmlsoap.org/ws/2004/08/addressing"><soap:Header><wsa:To>urn:uuid:dbe17c74-3b21-4f52-addc-b84b444f73a0</wsa:To><wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/Get</wsa:Action><wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID><wsa:ReplyTo><wsa:Address>https://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address></wsa:ReplyTo><wsa:From><wsa:Address>urn:uuid:b32467b5-e7ee-4ae3-8a8e-f5aa417c23b6</wsa:Address></wsa:From></soap:Header><soap:Body></soap:Body></soap:Envelope>
16:51:47.899 ::*0000004* :: <<<<-------- End ----------------------------------------------->>>>
16:51:47.899 ::*0000004* :: WinHttpWriteData() returning TRUE
Action 要素 (<wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/Get</wsa:Action>
) は、メッセージを Get メッセージとして識別します。 To 要素 (たとえば) の値が、<wsa:To>urn:uuid:dbe17c74-3b21-4f52-addc-b84b444f73a0</wsa:To>
元の UDP WS-Discovery メッセージでホストによってアドバタイズされたデバイス ID と一致することを確認します。 ホストによってアドバタイズされたデバイス ID は、WSD デバッグ ホストを使用して確認できます。 詳細については、「 UDP WS-Discovery に汎用ホストとクライアントを使用する」を参照してください。
さらに、メタデータ要求に対するホストの応答は、クライアントの WinHTTP ログにあります。 ホストは、クライアントの Get メッセージに応答して GetResponse メッセージを生成します。
次の WinHTTP ログ ファイル スニペットは、WSDAPI クライアントによって受信された 受信 GetResponse メッセージを示しています。
16:51:47.899 ::*0000004* :: WinHttpReceiveResponse(0x36aae0, 0x0)
16:51:47.899 ::*0000004* :: WinHttpReceiveResponse() returning TRUE
16:51:47.899 ::*Session* :: DllMain(0x73fc0000, DLL_THREAD_ATTACH, 0x0)
16:51:47.902 ::*0000004* :: received data:
16:51:47.902 ::*0000004* :: 1024 (0x400) bytes
16:51:47.902 ::*0000004* :: <<<<-------- HTTP stream follows below ----------------------------------------------->>>>
16:51:47.902 ::*0000004* :: HTTP/1.1 200
16:51:47.902 ::*0000004* :: Content-Type: application/soap+xml
16:51:47.902 ::*0000004* :: Server: Microsoft-HTTPAPI/2.0
16:51:47.902 ::*0000004* :: Date: Fri, 15 Jun 2007 23:51:47 GMT
16:51:47.905 ::*0000004* :: Content-Length: 2228
16:51:47.905 ::*0000004* ::
16:51:47.905 ::*0000004* :: <?xml version="1.0" encoding="utf-8" ?>
16:51:47.905 ::*0000004* :: <soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="https://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsx="https://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/devprof" xmlns:un0="http://schemas.microsoft.com/windows/pnpx/2005/10" xmlns:pub="http://schemas.microsoft.com/windows/pub/2005/07"><soap:Header><wsa:To>https://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To><wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse</wsa:Action><wsa:MessageID>urn:uuid:2884cbcc-2848-4c35-9327-5ab5451a8729</wsa:MessageID><wsa:RelatesTo>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:RelatesTo></soap:Header><soap:Body><wsx:Metadata><wsx:MetadataSection Dialect="https://schemas.xmlsoap.org/ws/2006/02/devprof/ThisDevice"><wsdp:ThisDevice><wsd
16:51:47.905 ::*0000004* :: <<<<-------- End ----------------------------------------------->>>>
Action 要素 (<wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse</wsa:Action>
) は、メッセージを GetResponse メッセージとして識別します。 GetResponse メッセージの RelatesTo 要素の値が、Get メッセージの MessageID 要素の値と一致することを確認します。 この例では、RelatesTo 要素 () の値が Get メッセージ<wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID>
(<wsa:RelatesTo>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:RelatesTo>
) の MessageID 要素の値と一致します。
関連トピック