Comment générer une référence de service avec uniquement un fichier wsdl physique


123

Je crée et utilise des services Web depuis des années et j'ai toujours pu utiliser Visual Studio pour créer une référence de service à partir du client. J'ai un service tiers avec lequel je dois travailler et ils refusent d'ouvrir leur sécurité afin que je puisse voir le wsdl et faire la référence du service. C'est un service public, donc je ne vois pas la nécessité d'un tel niveau de sécurité, mais c'est ce qu'il est.

Je sais que c'est une question n00b et j'ai honte de la poser, mais comment puis-je créer les informations de référence de service équivalentes dans mon client lorsque tout ce dont je dispose est une copie physique du wsdl que le client m'a envoyé par e-mail? Le web.config change, la couche objet sur les données SOAP, etc. Tout comme avec une référence de service automatisée, je veux juste ouvrir une connexion au service et commencer à l'utiliser avec les objets définis.

Le service tiers n'est pas WCF pour autant que je sache, mais SOAP. J'utilise VS 2010 btw. Merci d'avance, Ken


Réponses:


180

Cela peut être la méthode la plus simple

  • Faites un clic droit sur le projet et sélectionnez "Ajouter une référence de service ..."
  • Dans la zone Adresse:, entrez le chemin physique (C: \ test \ project ....) du fichier wsdl téléchargé / modifié.
  • Appuyez sur Go

11
Si vous utilisez "Copier comme chemin", supprimez les guillemets.
O. Jones

Lors de l'enregistrement du wsdl pour le transmettre à quelqu'un d'autre, «afficher la source» du wsdl du webservice dans chrome m'a donné un wsdl fonctionnel, contrairement à IE11. YMMV.
archange76

68

Il y a deux façons d'aborder cela. Vous pouvez soit utiliser l'EDI pour générer un WSDL, soit le faire via la ligne de commande.

1. Pour le créer via l'IDE:

Dans le volet de l'explorateur de solutions, cliquez avec le bouton droit sur le projet auquel vous souhaitez ajouter le service:

entrez la description de l'image ici

Ensuite, vous pouvez entrer le chemin d'accès à votre service WSDL et appuyez sur go:

entrez la description de l'image ici

2. Pour le créer via la ligne de commande:

Ouvrez une invite de commande VS 2010 (Programmes -> Visual Studio 2010 -> Visual Studio Tools)
puis exécutez:

WSDL /verbose C:\path\to\wsdl

WSDL.exe produira alors un fichier .cs pour votre consommation.

Si vous avez d'autres dépendances que vous avez reçues avec le fichier, telles que xsd, ajoutez-les à la liste d'arguments:

WSDL /verbose C:\path\to\wsdl C:\path\to\some\xsd C:\path\to\some\xsd

Si vous avez besoin d'une sortie VB, utilisez /language:VBen plus de l'extension /verbose.


J'obtiens 'Impossible d'importer la liaison' blah 'depuis l'espace de noms' blahURL 'et Impossible d'importer l'opération' SomeRequest ', L'élément' xxx 'est manquant. Cela signifie-t-il qu'ils doivent me donner plus de fichiers de support, ou qu'ils ont leur sécurité tellement verrouillée que je ne peux rien faire?
kfoster

Il semble certainement que vous manquiez de dépendances. Ouvrez le WSDL et regardez en haut. Si vous voyez des lignes importcontenant un suivi d'un schemaLocation qui pointe vers un chemin xsd, vous aurez également besoin de ces fichiers xsd.
Lynn Crumbling

Merci pour la réponse. J'ai un e-mail exceptionnel avec le client pour voir si je peux obtenir les importations xsd nécessaires. C'est tellement frustrant cependant, quand c'est bien fait, je viens d'afficher une URL dans la boîte de dialogue ServiceReference, appuyez sur un bouton et l'alto! Je suis à environ 3 lignes de code d'appeler une méthode de service. L'ensemble du processus prend environ 5 minutes. Mais je travaille avec ce client depuis des semaines et je n'ai rien trouvé parce que leurs responsables de la sécurité n'ouvriront l'accès à aucune définition de service via le Web.
kfoster

C'est dur. J'attends actuellement une connexion VPN pour un projet, moi-même. Heureusement, ils m'ont donné le wsdl et les documents xsd d'accompagnement à l'avance. Vous avez donc trouvé ces importations dans le wsdl?
Lynn Crumbling

Oui. Il s'avère que pour 4 services, ils m'ont donné wsdl pour 2 d'entre eux et xsd pour les 2 autres, donc aucun ensemble complet de fichiers pour aucun des services. Mais j'ai finalement obtenu xsd et j'ai pu générer des fichiers .cs pour 2 des services, les 2 autres suivront je suppose. Merci.
kfoster
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.