Verwenden eines generischen Hosts und Clients für den HTTP-Metadatenaustausch

Wenn der Client und der Host keine Metadaten austauschen können, kann ein generischer Host und Client durch den benutzerdefinierten Host und Client ersetzt werden, um das Problem zu beheben. Wenn die Geräteadresse oder Gerätemetadaten nicht in der WSD-Debugclient-Ausgabe angezeigt werden, kann die angegebene Transportadresse oder die Netzwerkumgebung für den Fehler verantwortlich sein. Weitere Informationen zum generischen Host und Client finden Sie unter Debugging-Tools.

Wenn überprüft wurde, ob ein generischer Host und Client sowohl den WS-Discovery- als auch den HTTP-Metadatenaustausch durchführen können, kann dieses Diagnoseverfahren übersprungen und die Problembehandlung fortgesetzt werden, indem die Verfahren unter Verwendung der WinHTTP-Protokollierung zum Überprüfen des Datenverkehrs überprüft werden.

Wenn der Host oder Client eine Anwendung ist, die auf einem PC ausgeführt wird, sollte der generische Host oder Client im gleichen Sicherheitskontext wie der tatsächliche Host oder Client ausgeführt werden. Wenn beispielsweise der tatsächliche Host oder Client als Administrator ausgeführt wird, muss der generische Host oder Client ebenfalls als Administrator ausgeführt werden. Wenn der Host oder Client ein eigenständiges Gerät ist, sollte er auch vollständig durch einen PC ersetzt werden, auf dem ein generischer Host oder Client in einem Sicherheitskontext ausgeführt wird, der unbegrenzten Netzwerkzugriff garantiert (z. B. mit Ausführung als Administrator).

So verwenden Sie einen generischen Host und Client zur Problembehandlung beim Austausch von HTTP-Metadaten

  1. Öffnen Sie ein Eingabeaufforderungsfenster.

  2. Führen Sie den folgenden Befehl aus: WSDDebug_host.exe /mode metadata /start

    Hinweis

    Möglicherweise wird ein Dialogfeld Windows Security Alert angezeigt. Wenn dies der Fall ist, klicken Sie auf Entsperren, damit der WSD Debug Host ausgeführt werden kann.

     

    Dieser Befehl generiert eine Ausgabe ähnlich der folgenden. Notieren Sie sich die Geräte-ID.

    WSDAPI Debug Host
    Copyright (C) Microsoft Corporation 2007.  All rights reserved.
    Device ID is urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
    Host metadata>
    
  3. Führen Sie den folgenden Befehl aus: WSDDebug_client.exe /mode metadata /hello off /resolve <id>. Ersetzen Sie <id> durch die in Schritt 2 identifizierte Geräte-ID.

    Hinweis

    Möglicherweise wird ein Dialogfeld Windows Security Alert angezeigt. Wenn dies der Fall ist, klicken Sie auf Entsperren, damit der WSD-Debugclient ausgeführt werden kann.

     

Der WSD-Debugclient generiert eine Ausgabe ähnlich der folgenden.

WSDAPI Debug Client
Copyright (C) Microsoft Corporation 2007.  All rights reserved.
Client ID is urn:uuid:0f571af7-6b0e-4daf-8054-f2233ac27910
Hello mode is disabled
Client metadata>
*****************************************************************************
Add at 02/28/07 15:16:51
+ EPR:
  + Address:                 urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
+ Types:
    (wsdp) https://schemas.xmlsoap.org/ws/2006/02/devprof:Device
+ XAddrs:
  https://[::1]:5357/37f86d35-e6ac-4241-964f-1d9ae46fb366
+ Metadata version:          2
+ Instance ID:               1
+ Probe/Resolve tag:         WSDAPI debug_client
+ Remote transport address:  [::1]:3702
+ Local transport address:   ::1
+ Local interface GUID:      42133cd4-6a70-11db-bbc9-806e6f6e6963
Client metadata>
*****************************************************************************
Getting metadata for host at 02/28/07 15:16:51:
+ Endpoint reference:
  + Address:
    urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
Using xAddr: https://[::1]:5357/37f86d35-e6ac-4241-964f-1d9ae46fb366
Client metadata>
*****************************************************************************
Metadata for host:
+ Endpoint reference:
  + Address:           urn:uuid:37f86d35-e6ac-4241-964f-1d9ae46fb366
Metadata section:
  + Dialect:
    https://schemas.xmlsoap.org/ws/2006/02/devprof/ThisDevice
  + Friendly name:
    [no lang]: Debugging Host
  + Firmware version:  1.0
  + Serial number:     00000000
Metadata section:
  + Dialect:
    https://schemas.xmlsoap.org/ws/2006/02/devprof/ThisModel
  + Manufacturer:
    [no lang]: Microsoft Corporation
  + Manufacturer URL:  https://www.microsoft.com/
  + Model names:
    [no lang]: Microsoft Debugging Host
  + Model number:      https://www.microsoft.com/
End of metadata
Client metadata>

Der WSD-Debugclient generiert in einem Netzwerk mit vielen DPWS-Geräten möglicherweise viele Ausgaben. Die Ausgabe kann zur einfacheren Analyse an eine Datei umgeleitet werden. Geben Sie in der WSD-Debugclient-Eingabeaufforderung log tee <filename> ein, um die Ausgabe an eine Datei umzuleiten. Die Ausgabeumleitung kann beendet werden, indem Sie in der WSD-Debugclient-Eingabeaufforderung log tee stop eingeben.

Notieren Sie sich die Endpunktreferenz (EPR)-Adresse. Diese EPR-Adresse sollte mit der in Schritt 2 oben angegebenen Geräte-ID übereinstimmen. Überprüfen Sie außerdem, ob der WSD-Debugclient die Metadaten für das Gerät vollständig gedruckt hat. Die Gerätemetadaten beginnen mit Metadata for host und enden mit End of metadata.

Wenn die Geräte-ID und die Gerätemetadaten in der Ausgabe des WSD-Debugclients korrekt angezeigt werden, hängt der Anwendungsfehler wahrscheinlich nicht mit den angegebenen Transportadressen, dem Betriebssystem oder der Netzwerkumgebung zusammen. Ersetzen Sie den generischen Host und Client durch den benutzerdefinierten Host und Client, und fahren Sie mit der Problembehandlung fort, indem Sie die Verfahren unter Verwendung der WinHTTP-Protokollierung zum Überprüfen des Datenverkehrs ausführen.

Wenn die Geräteadresse und die Gerätemetadaten nicht in der Ausgabe des WSD-Debugclients angezeigt werden, kann der Fehler eine oder mehrere der folgenden Ursachen haben:

  • Die vom Host angegebene Transportadresse ist inkorrekt oder falsch formatiert. Der WSD-Debugclient versucht, Geräte-Metadaten von der im XAddrs-Element einer ProbeMatches- oder ResolveMatches-Nachricht angegebenen URL abzurufen. Die für den Metadatenaustausch verwendete URL wird in der Ausgabe des WSD-Debugclients angezeigt, mit dem Ausdruck Using xAddr als Präfix. Das folgende Beispiel zeigt die für den Metadatenaustausch verwendeten XAddrs in der obigen WSD-Debugclient-Ausgabe.

    Using xAddr: https://[::1]:5357/37f86d35-e6ac-4241-964f-1d9ae46fb366
    

    Wenn die bereitgestellten XAddrs nicht den XAddr-Validierungsregeln entsprechen, kann der WSD-Debugclient die Metadaten des Geräts nicht abrufen.

  • Die Anwendung wird im falschen Sicherheitskontext ausgeführt. Stellen Sie sicher, dass die Anwendung die korrekten Anmeldeinformationen verwendet und dass der Client und der Host über ausreichende Berechtigungen für den Zugriff auf das Netzwerk verfügen.

  • Die Firewall-Konfiguration ist inkorrekt. Befolgen Sie die Anweisungen unter Überprüfen von Adapter- und Firewall-Einstellungen, um zu überprüfen, ob die Windows-Firewall-Einstellungen korrekt sind und keine anderen Regeln zum Ablegen der Pakete vorliegen. Der Client und der Host können auch auf einen „unberührten“ Computer kopiert werden (d.h. einen mit einer Standardinstallation des Betriebssystems, die noch nie einer Domäne beigetreten ist), um zu versuchen, den Fehler zu reproduzieren.

  • Eine IPSec-Richtlinie blockiert die Anwendung. Kopieren Sie den Client und den Host auf einen Computer, der nicht IPSec-Richtlinien unterliegt, und versuchen Sie, den Fehler zu reproduzieren.

WSDAPI-Diagnoseprozeduren

Erste Schritte bei der Problembehandlung mit WSDAPI