Использование ведения журнала WinHTTP для проверки получения трафика

Если универсальный узел и клиент успешно выполнены, но фактический узел и клиент по-прежнему завершаются ошибкой, возможно, запрос метаданных не инициируется. Ведение журнала WinHTTP можно использовать для проверки правильности создания и отправки исходящих сообщений.

Клиентские приложения на основе WSDAPI используют WinHTTP для подключения к устройствам. Узлы устройств на основе WSDAPI не используют WinHTTP. Кроме того, некоторые сторонние прокси-серверы не используют WinHTTP. При устранении неполадок узла или прокси-сервера, не использующих WinHTTP, пропустите эту диагностическую процедуру и продолжайте устранение неполадок, следуя процедурам проверки трассировок сети для метаданных HTTP Exchange.

Ведение журнала WinHTTP не отображает весь трафик на уровне TCP. Перейдите к проверке трассировок сети для метаданных HTTP Exchange, если трафик, кроме HTTP-трафика, является интересующим.

Использование ведения журнала WinHTTP для проверки трафика

  1. Запись журналов WinHTTP.
  2. Запустите Блокнот или другой текстовый редактор. Текстовый редактор должен быть запущен от имени администратора.
  3. Откройте файл журнала WinHTTP.
  4. Убедитесь, что были отправлены необходимые HTTP-запросы и сообщения метаданных.

Если сообщение Get для узла найдено в журналах WinHTTP, запросы метаданных отправляются в WinHTTP успешно. Продолжайте устранять неполадки, следуя процедурам проверки трассировок сети для Exchange метаданных HTTP.

Если сообщение Get не удается найти для узла в журналах WinHTTP, запрос метаданных не инициируется. Это может произойти, когда узел публикует недопустимые XAddrs. Убедитесь, что XAddrs на узле соответствуют правилам проверки XAddr.

Проверка отправки необходимых HTTP-запросов и сообщений метаданных

Для успешного обмена метаданными должны возникать следующие события:

  • Клиент WSDAPI создает исходящий HTTP-запрос. Этот запрос отправляется на узел WSDAPI.
  • Клиент отправляет узлу сообщение Get .

Эти события записываются в журналы WinHTTP.

В следующем фрагменте файла журнала WinHTTP показан исходящий HTTP-запрос, созданный клиентом WSDAPI.

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>объявленным узлом в исходных сообщениях WS-Discovery UDP. Идентификатор устройства, объявленный узлом, можно проверить с помощью узла отладки WSD. Дополнительные сведения см. в статье об использовании универсального узла и клиента для обнаружения WS-discovery UDP.

Кроме того, ответ узла на запрос метаданных можно найти в журналах WinHTTP клиента. Узел создает сообщение GetResponse в ответ на сообщение Get клиента.

В следующем фрагменте файла журнала WinHTTP показано входящее сообщение GetResponse , полученное клиентом WSDAPI.

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 . Убедитесь, что значение элемента RelatesTo сообщения GetResponse соответствует значению элемента MessageID сообщения Get . В этом примере значение элемента RelatesTo (<wsa:RelatesTo>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:RelatesTo>) соответствует значению элемента MessageID сообщения Get (<wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID>).

WinHTTP

Запись журналов WinHTTP

Диагностические процедуры WSDAPI

начало работы с устранением неполадок WSDAPI