Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если универсальный хост и клиент успешны, но фактический хост и клиент по-прежнему завершаются ошибкой, возможно, что запрос метаданных не инициируется. ведение журнала 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
Элемент действие (<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. Для получения более подробной информации см. раздел Использование универсального хоста и клиента для обнаружения 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>
).
Связанные разделы