共用方式為


使用 WinHTTP 記錄來驗證取得流量

如果泛型主機和用戶端成功,但實際主機和用戶端仍然失敗,則中繼資料要求可能不會起始。 WinHTTP 記錄可用來確認輸出訊息正在產生並正確傳送。

以 WSDAPI 為基礎的用戶端應用程式會使用 WinHTTP 連線到裝置。 WSDAPI 型裝置主機不使用 WinHTTP。 此外,某些協力廠商 Proxy 不會使用 WinHTTP。 針對不使用 WinHTTP 的主機或 Proxy 進行疑難排解時,請遵循 檢查 HTTP 中繼資料交換的網路追蹤中的程式,略過此診斷程式並繼續疑難排解。

WinHTTP 記錄不會顯示所有 TCP 層級的流量。 如果 HTTP 流量以外的流量感興趣,請跳至 檢查 HTTP 中繼資料交換的網路追蹤

若要使用 WinHTTP 記錄來驗證取得流量

  1. 擷取 WinHTTP 記錄。
  2. 啟動「記事本」或其他文字編輯器。 文字編輯器必須以系統管理員身分執行。
  3. 開啟 WinHTTP 記錄檔。
  4. 確認已傳送必要的 HTTP 要求和中繼資料訊息。

如果在 WinHTTP 記錄中找到主機的 Get 訊息,則會成功將中繼資料要求傳送至 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訊息中公告的裝置識別碼。 您可以使用 WSD 偵錯主機來檢查主機公告的裝置識別碼。 如需詳細資訊,請參閱 使用泛型主機和用戶端進行 UDP WS-Discovery

此外,主機對中繼資料要求的回應可以在用戶端的 WinHTTP 記錄中找到。 主機會產生 GetResponse 訊息,以回應用戶端的 Get 訊息。

下列 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元素的值 () <wsa:RelatesTo>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:RelatesTo> 符合 Get 訊息 () <wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID>MessageID元素的值。

WinHTTP

擷取 WinHTTP 記錄

WSDAPI 診斷程式

使用 WSDAPI 疑難排解消費者入門