2009-10-21 9 views
3

J'ai un service Web wcf et j'ai besoin de fournir au client les fichiers wsdl.wcf Extrait wsdl du service WCF avec WSDL aplati

Auparavant, j'ai utilisé svcutil sur le fichier .dll et tout allait bien.

Cependant, récemment, j'ai mis en œuvre l'usine pour Flaten le fichier wsdl (re: http://wcfextras.codeplex.com/). Mes questions sont les suivantes: Est-il utile d'utiliser svcutil sur le fichier .svc pour extraire les fichiers .WSDL aplatis ou peut-être d'une manière ou d'une autre frapper le service Web lorsqu'il est exécuté sur le serveur webdev local pour récupérer les fichiers .WSDL ? Pour autant que je sache, si je devais naviguer vers mon serveur de développement web local (http://localhost:2916/Service.svc?wsdl) et si je devais voir la source et enregistré cela comme .wsdl que c'est faux et ne fournirait pas tous les pertinents information.

Note: Voir ci-dessous pour savoir comment l'usine est utilisé dans le fichier .svc ....

<% @ServiceHost Factory="CompanyName.ServiceModel.Extensions.Description.FlatWsdlServiceHostFactory" language=c# Service="CompanyName.WebServices.Service"%> 

Merci, Steven

Répondre

6

Oui, vous devriez toujours être en mesure d'utiliser svcutil pour extraire le WSDL de votre service, même si vous avez installé une extension qui aplatira le WSDL.

Pour télécharger le document de métadonnées (s) de votre service en cours d'exécution, utilisez cette commande:

svcutil /t:metadata http://service/metadataEndpoint 

Vous devez pointer votre URL vers le point de terminaison de métadonnées définies dans votre configuration, par exemple le point de terminaison défini pour utiliser "mexHttpBinding" ou "mexTcpBinding" et le contrat "IMetadataExchange".

Si vous n'avez défini aucun point de terminaison d'échange de métadonnées, vous ne pourrez évidemment pas récupérer cette information.

+0

Bonjour Marc, merci pour votre aide .... question rapide, j'ai pu ajouter le mexHttpBinding et obtenir le wsdl en utilisant svcutil/t: métadonnées Savez-vous pourquoi il crée deux fichiers? filename1.wsdl filename.wsdl Le fichier avec le '1' dans le nom a beaucoup de savon: savon de liaison: savon de corps: opération, ext ... alors que le fichier sans le '1' dans le nom vraiment contient uniquement les balises wsdl et xsd. Est-ce que je fournirais à la fois au client? Merci encore pour votre aide. Steven. – stevenrosscampbell

+1

Je crois que l'exécution de WCF va générer un WSDL par espace de noms, si je ne me trompe pas. Vous pouvez aplatir le XSD dans le WSDL mais il semble que vous ne pouvez pas "fusionner" deux parties WSDL avec des espaces de noms différents. Et oui, je crois que vous avez besoin des deux fichiers pour fonctionner correctement (l'un référence l'autre) –

+0

Hey Marc Merci encore. Bonnes nouvelles, le client a décidé qu'ils sont prêts à frapper le service Web directement :) Pas besoin de moi pour générer plus (j'ai appris beaucoup avec votre aide si) Tous les meilleurs. Steven – stevenrosscampbell

Questions connexes