it-swarm.com.de

Erstellen Sie einen Webdienst-Proxy in Visual Studio aus einer WSDL-Datei

Meine Anwendung muss mit einem Webdienst sprechen, der keine Online-WSDL-Definition hat. Die Entwickler haben mir jedoch eine WSDL-Datei zur Verfügung gestellt.

Mit einer öffentlichen WSDL kann Visual Studio diesen Code für mich mithilfe des Service Reference-Assistenten erstellen. Es scheint jedoch nicht ohne eine öffentliche WSDL zu funktionieren.

Wie generiere ich den Code für die Kommunikation mit diesem Webdienst mithilfe dieser WSDL-Datei?

94
Anne

Versuchen Sie es mit WSDL.exe und fügen Sie dann die generierte Datei (.cs) in Ihr Projekt ein.

Starten Sie die Visual Studio-Eingabeaufforderung (unter Visual Studio/Tools im Startmenü) und geben Sie dann ein

>wsdl.exe [path To Your WSDL File]

Das spuckt eine Datei aus, die Sie kopieren/verschieben und in Ihr Projekt einfügen. Diese Datei enthält eine Klasse, die ein Proxy für Ihren Dienst ist. Starten Sie eine Instanz dieser Klasse, und Sie haben eine URL-Eigenschaft, die Sie sofort einstellen können, und eine Reihe von Methoden, die Sie aufrufen können. Es werden auch Klassen für alle komplexen Objekte generiert, die über die Service-Schnittstelle übergeben werden.

108
Andrew M

Die Verwendung von WSDL.exe hat für mich nicht funktioniert (gab mir einen Fehler bezüglich eines fehlenden Typs), aber ich konnte in VS mit der rechten Maustaste auf mein Projekt klicken und "Dienstverweis hinzufügen" auswählen. Ich habe den Pfad zur WSDL-Datei in das Adressfeld eingegeben und auf "Los" geklickt. Das schien in der Lage zu sein, alle passenden Typen zu finden und die Klassen direkt in mein Projekt aufzunehmen.

130
jeffaudio

Anmerkung: Wenn Sie all der Dateien lokal haben (nicht nur wsdl-Datei, sondern auch xsd-Dateien), können Sie wsdl.exe auf diese Weise aufrufen:

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]

Auf diese Weise kann wsdl.exe alle Dependecies lokal auflösen und die Proxy-Klasse korrekt generieren.

Möglicherweise spart es jemanden etwas Zeit - es löst einen "fehlenden Typ" -Fehler, wenn der Dienst nicht online verfügbar ist.

13
Jarek Mazur

Probieren Sie das WSDL To Proxy-Klassenwerkzeug aus, das im .NET Framework SDK enthalten ist. Ich habe es noch nie benutzt, aber es sieht auf jeden Fall so aus, wie Sie es brauchen.

3
Steve Danner

Es gibt ein Microsoft Doc zum Erstellen Ihres WCF-Proxys über die Befehlszeile .

Sie finden Ihre lokale Kopie von wsdl.exe an einem ähnlichen Ort: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools ( Weitere Informationen hier )

Am Ende sollte Ihre Command so aussehen:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe"
 /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl
1
Serj Sagan

speichern Sie die Datei auf Ihrer Festplatte und verwenden Sie folgende URL als URL: 

file://your_path/your_file.wsdl
0
Evan Camilleri