web-dev-qa-db-fra.com

Créer un proxy de service Web dans Visual Studio à partir d'un fichier WSDL

Mon application doit communiquer avec un service Web qui n'a pas de définition WSDL en ligne. Les développeurs m'ont cependant fourni un fichier WSDL.

Avec un WSDL public, Visual Studio peut générer ce code pour moi à l'aide de l'assistant de référence de service. Mais cela ne semble pas fonctionner sans un WSDL public.

Comment générer le code pour communiquer avec ce service Web à l'aide de ce fichier WSDL?

94
Anne

Essayez d’utiliser WSDL.exe puis d’inclure le fichier généré (.cs) dans votre projet.

Lancez l'invite de commande Visual Studio (sous Visual Studio/Outils dans le menu Démarrer), puis tapez

>wsdl.exe [path To Your WSDL File]

Cela crache un fichier que vous copiez/déplacez et que vous incluez dans votre projet. Ce fichier contient une classe qui est un proxy de votre service, lancez une instance de cette classe, et a une propriété URL que vous pouvez définir à la volée, ainsi que de nombreuses méthodes que vous pouvez appeler. Il va également générer des classes pour tous/tous les objets complexes transmis à travers l'interface de service.

108
Andrew M

L'utilisation de WSDL.exe ne fonctionnait pas pour moi (m'a donné une erreur concernant un type manquant), mais j'ai été en mesure de cliquer avec le bouton droit de la souris sur mon projet dans VS et de sélectionner "Ajouter une référence de service". J'ai entré le chemin d'accès au fichier WSDL dans le champ Adresse et cliquez sur "Go". Cela semblait pouvoir trouver tous les types appropriés et ajouter les classes directement à mon projet.

130
jeffaudio

Remarque: si vous avez tous des fichiers localement (non seulement le fichier wsdl, mais également les fichiers xsd), vous pouvez appeler wsdl.exe de la manière suivante:

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

De cette façon, wsdl.exe peut résoudre toutes les dépendances localement et génère correctement une classe de proxy.

Peut-être que cela sauvera du temps à quelqu'un - cela résoudra l'erreur "type manquant" lorsque le service en ligne n'est pas disponible.

13
Jarek Mazur

Essayez l'outil de classe WSDL To Proxy fourni avec le Kit de développement .NET Framework SDK. Je ne l'ai jamais utilisé auparavant, mais cela ressemble certainement à ce dont vous avez besoin.

3
Steve Danner

Il existe un Microsoft Doc pour créer votre proxy WCF à partir de la ligne de commande .

Vous pouvez trouver votre copie locale de wsdl.exe à un emplacement similaire à celui-ci: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools ( En savoir plus ici )

À la fin, votre Command devrait ressembler à ceci:

"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

enregistrez le fichier sur votre disque, puis utilisez l'URL suivante: 

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