Comment partagez-vous WCF WSDL et XSD à un client sans l'accès au service (encore)?
J'ai essayé de générer le WSDL et puis chaque XSD trouvé dans le WSDL manuellement avec un client. Le service est uniquement sur mon localhost pour le moment, et n'a pas encore été publié.
Que le client reçoit les erreurs suivantes:
Le document a été entendu, mais il n'a pas pu être traitée.
Le document WSDL contient des liens qui ne pourraient être résolus.
Il y a une erreur de téléchargement 'http://localhost:xxxx/MyService.svc?xsd=xsd0'.
Impossible de se connecter au serveur distant Aucune connexion n'a pu être établie car l'
machine cible il refusait activement 127.0.0.1:xxxx
Comment les services WSDL et XSD être générées et partagées afin qu'ils puissent commencer le codage du client (sans accès au service de l'atm?
Modifier
Les questions se rapportent à ces de la WSDL/XSD
WSDL
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd0"
namespace="http://tempuri.org/"/>
<xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1"
namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
<xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd2"
namespace="**MYNAMESPACE**"/>
</xsd:schema>
XSD
<xs:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1"
namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
Edit 2:
Grâce à @The Indian Programmmer
j'ai été en mesure de générer une classe proxy programme contre avec cette commande:
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\svcutil.exe" -noconfig -namespace:*,SERVICE.INTERFACE.NAMESPACE -serializer:datacontractserializer https://My-PC/SvrLocation/MyService.svc?wsdl
(hébergé en local IIS)
Merci, .NET 4.5 a l'air assez pratique avec l'intégré ?singleWsdl au lieu de ?wsdl
Je ne sais pas comment choisir la "réponse". J'ai utilisé les deux @L'Indien Programmeur et @Kristof réponses pour obtenir un .cs fichier qui peut être programmé contre (contient les contrats de service et de la DataContracts). - Je changer la
schemaLocation="localfile.xsd"
et ensuite utilisé wsdl.exe file.wsdl localfile.xsd localfile2.xsd localfile3.xsd
donc, fondamentalement, ils ont tous deux m'ont aidé à résoudre ce problème.Ne pas utiliser wsdl.exe, utilisation svcutil.exe pour générer des fichiers proxy
J'ai mis à jour ma réponse
OriginalL'auteur lko | 2012-10-31
Vous devez vous connecter pour publier un commentaire.
Première parcourir à votre wsdl en exécutant votre service.
Puis accédez à toutes les xsd dans le WSDL séparément et de les enregistrer comme fichiers xsd.
Mise à jour de votre wsdl avec la nouvelle xsd chemin d'accès relatif.. il suffit de remplacer le lien pour xsd par son nom.
Replace http://localhost:xxxx/MyService.svc?xsd=xsd0 with respective FileName
Mise à jour : Comment générer des fichiers proxy
Tous les fichiers doivent être dans le même dossier.
WSDL.exe
l' .cs a tous les XSDs (DataContract classes) et le Service (ServiceContract) qui peut être programmé en contre. Quand j'ai essayé ceci (svcutil) il a seulement donné le ServiceContract, si vous utilisez ce .cs puis comment voulez-vous le programme de la DataContract classes (ils ne sont que dans le XSDs)? Fait quelque chose de mal se passer avec la svcutil appel.oui, Il aura tous les Contrats
Avez-vous addeded tous vos fichiers xsd pour svcutil et leur lien il est indiqué dans le wsdl aussi
J'ai d'abord essayé avec la changé WSDL avec ces changements.
<xsd:import schemaLocation="Messages.xsd" namespace="namespace"/>
Qui ne comprend pas le DataContract classes dans le proxy, alors j'ai essayé le svcutil avec les autres paramètres ci-dessus directement contre le service. Cela a généré une classe proxy comme prévu. (encore besoin de le tester)"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\svcutil.exe" -noconfig -namespace:*,SERVICE.INTERFACE.NAMESPACE -serializer:datacontractserializer https://My-PC/SvrLocation/MyService.svc?wsdl
(hébergé en local IIS)Cela semble être ce dont j'ai besoin, mais je suis incapable de trouver comment changer l'url/nom de fichier dans mon fichier WSDL généré automatiquement. Comment êtes-vous la modification de l'attribut schemaLocation?
OriginalL'auteur Kishore Kumar
Vous pouvez télécharger le fichier wsdl à partir de votre localhost.
Pour ce faire, vous pouvez aller à "http://localhost:xxx/MyService.svc?wsdl"
Sur cette base wsdl, vous pouvez utiliser l'outil wsdl pour générer un proxy de service.
Pour plus d'informations sur la façon de générer le proxy voir cette question
OriginalL'auteur Kristof