Partager via


Utilisation de la journalisation WinHTTP pour vérifier l’obtention du trafic

Si l’hôte générique et le client réussissent, mais que l’hôte et le client réels échouent toujours, il est possible que la demande de métadonnées ne soit pas lancée. La journalisation WinHTTP peut être utilisée pour vérifier que les messages sortants sont générés et envoyés correctement.

Les applications clientes basées sur WSDAPI utilisent WinHTTP pour se connecter aux appareils. Les hôtes d’appareils basés sur WSDAPI n’utilisent pas WinHTTP. En outre, certains proxys tiers n’utilisent pas WinHTTP. Lors de la résolution des problèmes d’un hôte ou d’un proxy qui n’utilise pas WinHTTP, ignorez cette procédure de diagnostic et poursuivez la résolution des problèmes en suivant les procédures décrites dans Inspection des traces réseau pour l’échange de métadonnées HTTP.

La journalisation WinHTTP n’affiche pas tout le trafic au niveau TCP. Passez à Inspection des traces réseau pour l’échange de métadonnées HTTP si le trafic en plus du trafic HTTP est intéressant.

Pour utiliser la journalisation WinHTTP pour vérifier obtenir le trafic

  1. Capturez les journaux WinHTTP.
  2. Lancez le Bloc-notes ou un autre éditeur de texte. L’éditeur de texte doit être exécuté en tant qu’administrateur.
  3. Ouvrez le fichier journal WinHTTP.
  4. Vérifiez que les requêtes HTTP requises et les messages de métadonnées ont été envoyés.

Si un message Get pour l’hôte est trouvé dans les journaux WinHTTP, les demandes de métadonnées sont envoyées à WinHTTP avec succès. Poursuivez la résolution des problèmes en suivant les procédures décrites dans Inspection des traces réseau pour l’échange de métadonnées HTTP.

Si un message Get est introuvable pour l’hôte dans les journaux WinHTTP, la demande de métadonnées n’est pas lancée. Cela peut se produire lorsque l’hôte publie des XAddrs non valides. Vérifiez que les XAddrs sur l’hôte sont conformes aux règles de validation XAddr.

Vérification que les requêtes HTTP requises et les messages de métadonnées ont été envoyés

Les événements suivants doivent se produire pour que l’échange de métadonnées réussisse :

  • Le client WSDAPI génère une requête HTTP sortante. Cette demande est envoyée à l’hôte WSDAPI.
  • Le client envoie un message Get à l’hôte.

Ces événements sont capturés dans les journaux WinHTTP.

L’extrait de fichier journal WinHTTP suivant montre une requête HTTP sortante générée par un client 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 ----------------------------------------------->>>>

L’extrait de code du fichier journal WinHTTP suivant affiche un message Get . Ce message doit suivre immédiatement la requête 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

L’élément Action (<wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/Get</wsa:Action>) identifie le message en tant que message Get. Vérifiez que la valeur de l’élément To (par exemple, <wsa:To>urn:uuid:dbe17c74-3b21-4f52-addc-b84b444f73a0</wsa:To>) correspond à l’ID d’appareil publié par l’hôte dans les messages UDP d’origine WS-Discovery. L’ID d’appareil publié par l’hôte peut être vérifié à l’aide de l’hôte de débogage WSD. Pour plus d’informations, consultez Utilisation d’un hôte et d’un client génériques pour udp WS-Discovery.

En outre, la réponse de l’hôte à la demande de métadonnées se trouve dans les journaux WinHTTP du client. L’hôte génère un message GetResponse en réponse au message Get du client.

L’extrait de code de fichier journal WinHTTP suivant montre un message GetResponse entrant reçu par un client 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 ----------------------------------------------->>>>

L’élément Action (<wsa:Action>https://schemas.xmlsoap.org/ws/2004/09/transfer/GetResponse</wsa:Action>) identifie le message en tant que message GetResponse. Vérifiez que la valeur de l’élément RelatesTo du message GetResponse correspond à la valeur de l’élément MessageID du message Get . Dans cet exemple, la valeur de l’élément RelatesTo (<wsa:RelatesTo>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:RelatesTo>) correspond à la valeur de l’élément MessageID du message Get (<wsa:MessageID>urn:uuid:8506ac50-3646-4621-9680-86f484d87909</wsa:MessageID>).

WinHTTP

Capture des journaux WinHTTP

Procédures de diagnostic WSDAPI

Prise en main avec WSDAPI Résolution des problèmes