WinHTTP ログを使用してトラフィックの取得を確認する

汎用ホストとクライアントが成功しても、実際のホストとクライアントが失敗した場合は、メタデータ要求が開始されていない可能性があります。 WinHTTP ログを使用して、送信メッセージが生成され、正しく送信されていることを確認できます。

WSDAPI ベースのクライアント アプリケーションでは、 WinHTTP を使用してデバイスに接続します。 WSDAPI ベースのデバイス ホストは WinHTTP を使用しません。 また、一部のサードパーティ プロキシでは WinHTTP を使用しません。 WinHTTP を使用しないホストまたはプロキシのトラブルシューティングを行う場合は、この診断手順をスキップし、「HTTP メタデータExchangeのネットワーク トレースの検査」の手順に従ってトラブルシューティングを続行します。

WinHTTP ログには、すべての TCP レベルのトラフィックが表示されるわけではありません。 HTTP トラフィック以外のトラフィックが重要な場合は、HTTP メタデータExchangeのネットワーク トレースの検査にスキップします。

WinHTTP ログを使用してトラフィックの取得を確認するには

  1. WinHTTP ログをキャプチャします。
  2. メモ帳または任意のテキスト エディターを起動します。 テキスト エディターは管理者として実行する必要があります。
  3. WinHTTP ログ ファイルを開きます。
  4. 必要な 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 要素の値と一致します。

WinHTTP

WinHTTP ログのキャプチャ

WSDAPI 診断手順

WSDAPI のトラブルシューティングを使用したはじめに