WinHTTP ログを使用したトラフィックの取得の確認
汎用ホストとクライアントが成功しても、実際のホストとクライアントが失敗した場合は、メタデータ要求が開始されていない可能性があります。 WinHTTP ログを使用して、送信メッセージが生成され、正しく送信されていることを確認できます。
WSDAPI ベースのクライアント アプリケーションでは、 WinHTTP を使用してデバイスに接続します。 WSDAPI ベースのデバイス ホストは WinHTTP を使用しません。 また、一部のサードパーティ プロキシでは WinHTTP が使用されません。 WinHTTP を使用しないホストまたはプロキシのトラブルシューティングを行う場合は、この診断手順をスキップし、「 HTTP メタデータ交換のネットワーク トレースを検査する」の手順に従ってトラブルシューティングを続行します。
WinHTTP ログには、すべての TCP レベルのトラフィックが表示されるわけではありません。 HTTP トラフィック以外のトラフィックが関心がある場合は 、「HTTP メタデータ Exchange のネットワーク トレースの検査 」に進みます。
WinHTTP ログを使用してトラフィックの取得を確認するには
- WinHTTP ログをキャプチャします。
- メモ帳または任意のテキスト エディターを起動します。 テキスト エディターは管理者として実行する必要があります。
- WinHTTP ログ ファイルを開きます。
- 必要な HTTP 要求とメタデータ メッセージが送信されたことを確認します。
ホストの Get メッセージが WinHTTP ログで見つかった場合、メタデータ要求は WinHTTP に正常に送信されます。 HTTP メタデータ交換のネットワーク トレースの検査に関するページの手順に従って、トラブルシューティングを続行します。
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 要素の値と一致します。
関連トピック