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

Mon application doit communiquer avec un service Web qui ne possède 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 à l’aide de l’assistant Service Reference. Mais cela ne semble pas fonctionner sans WSDL public.

Comment générer le code pour parler à ce service Web à l’aide de ce fichier WSDL?

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

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

>wsdl.exe [path To Your WSDL File] 

Cela crachera un fichier que vous copiez / déplacez et incluez dans votre projet. Ce fichier contient une classe qui est un proxy pour votre service, lancez une instance de cette classe, et il aura une propriété URL que vous pouvez définir à la volée, et un tas de méthodes que vous pouvez appeler. Il générera également des classes pour tous les objects complexes transmis via l’interface de service.

L’utilisation de WSDL.exe n’a pas fonctionné pour moi (m’a donné une erreur concernant un type manquant), mais j’ai pu cliquer avec le bouton droit sur mon projet dans VS et sélectionner “Ajouter une référence de service”. Je suis entré dans le chemin vers le fichier wsdl dans le champ Adresse et appuyez sur “Go”. Cela semblait pouvoir trouver tous les types appropriés et append les classes directement à mon projet.

Remarque: si vous avez tous les fichiers localement (non seulement le fichier wsdl mais aussi les fichiers xsd), vous pouvez appeler wsdl.exe de cette manière:

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

Ainsi, wsdl.exe peut résoudre toutes les dépendances localement et génère correctement la classe proxy.

Peut-être que cela permettra à quelqu’un de gagner du temps – il résout l’erreur “type manquant” lorsque le service n’est pas disponible en ligne.

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.

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 dans un emplacement similaire à celui-ci: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools (en savoir plus ici )

A 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 

Enregistrez le fichier sur votre disque, puis utilisez l’URL suivante:

 file://your_path/your_file.wsdl 

Étant donné que la véritable URL de liaison du service Web se trouve dans le fichier, vous pouvez effectuer ces étapes simples à partir de votre ordinateur local:

1) Enregistrez le fichier sur votre ordinateur local, par exemple:

 C:\Documents and Settings\[user]\Desktop\Webservice1.asmx 

2) Dans Visual Studio, cliquez avec le bouton droit sur votre projet> Choisissez Ajouter une référence Web, une boîte de dialog s’ouvrira.

3) Dans la zone URL Copiez l’emplacement du fichier local au-dessus de C: \ Documents and Settings [utilisateur] \ Desktop \ Webservice1.asmx, cliquez sur Suivant.

4) Maintenant, vous verrez les fonctions apparaître, choisissez votre nom pour la référence, Cliquez sur Ajouter une référence

5) Vous avez terminé! vous pouvez commencer à l’utiliser comme espace de noms dans votre application, ne vous inquiétez pas si vous avez utilisé un fichier local, car de toute façon la véritable URL du service se trouve dans le fichier de la section Liaison