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

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

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

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

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

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

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

Кроме того, ответ узла на запрос метаданных можно найти в клиентских журналах 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 message (<wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID>).

WinHTTP

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

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

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