Использование ведения журнала WinHTTP для проверки получения трафика
Если универсальный узел и клиент успешно завершены, но фактический узел и клиент по-прежнему завершаются ошибкой, возможно, запрос метаданных не инициируется. Ведение журнала WinHTTP можно использовать для проверки правильности создания и отправки исходящих сообщений.
Клиентские приложения на основе WSDAPI используют WinHTTP для подключения к устройствам. Узлы устройств на основе WSDAPI не используют WinHTTP. Кроме того, некоторые сторонние прокси-серверы не используют WinHTTP. При устранении неполадок с узлом или прокси-сервером, не использующим WinHTTP, пропустите эту процедуру диагностики и продолжайте устранение неполадок, следуя инструкциям из раздела Проверка трассировки сети для обмена метаданными HTTP.
В журнале WinHTTP отображается не весь трафик уровня TCP. Перейдите к разделу Проверка трассировок сети для обмена метаданными HTTP , если трафик не является трафиком HTTP.
Использование ведения журнала WinHTTP для проверки получения трафика
- Запишите журналы WinHTTP.
- Запустите Блокнот или другой текстовый редактор. Текстовый редактор должен быть запущен от имени администратора.
- Откройте файл журнала WinHTTP.
- Убедитесь, что были отправлены необходимые 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>
).
Связанные темы