web-dev-qa-db-fra.com

Comment générer un service WCF avec SvcUtil.exe

J'utilise SvcUtil.exe pour générer IClassName.cs fichier à partir du fichier wsdl et cela fonctionne correctement. Mon problème est que je ne sais pas comment générer ClassName.svc file en utilisant des arguments de commande pour SvcUtil.exe.

Après avoir exécuté SvcUtil.exe, j'aimerais obtenir le service WCF comme lorsque vous aviez créé à partir de Visual Studio Wizard contenant toutes les classes * .svc, * .cs et interface.

Merci, Skrch

6
Skrch

Tout d'abord, pour générer une classe de proxy, notre service doit être opérationnel. Par conséquent, avant d’utiliser cet utilitaire, assurez-vous que votre service fonctionne sans problème.

Après avoir vérifié l’état du service, accédez à l’invite de commande Visual Studio et exécutez la commande suivante.

svcutil http://localhost/MyService/ClassName.svc /Language=c#
/t:Code /out:ClassNameProxy.cs /config:ClassNameProxy.config

Dans la commande ci-dessus, vous devez remplacer l'URL du service (http://localhost/MyService/Service1.svc) par l'URL de votre service. Puisque mes services sont développés en c # .net, je choisis donc de générer les proxies dans le même langage en utilisant/Language = c #.

/ t: code spécifiera que la sortie doit être générée sous forme de code. 

Les paramètres /out:ClassNameProxy.cs /config:ClassNameProxy.config indiqueront à l'utilitaire de nommer les fichiers comme spécifié dans ces valeurs de paramètre . Après avoir exécuté la commande, tool générera le fichier de sortie et le fichier de configuration.

Après cela, incluez simplement le fichier ClassNameProxy.cs dans votre projet et ouvrez le fichier ClassNameProxy.config, puis copiez les entrées dans votre fichier web.config . Vous devrez peut-être également mettre à jour le fichier ClassNameProxy.vb et mettre à jour le namespace selon celui que vous utilisez dans votre projet. Après cela, vous pouvez facilement référencer le service dans votre code et appeler les opérations.

15

Quelques exemples d'outil d'utilisation

svcutil http://service/metadataEndpoint - Générez le code client à partir d'un service en cours d'exécution ou de documents de métadonnées en ligne.

svcutil *.wsdl *.xsd /language:C# - Générer du code client à partir de documents de métadonnées locales.

svcutil /dconly *.xsd /language:VB - Générer des types de contrat de données dans VisualBasic à partir de documents de schéma locaux.

svcutil /t:metadata http://service/metadataEndpoint - Télécharger des documents de métadonnées à partir de services en cours d'exécution

svcutil myAssembly.dll - Générez des documents de métadonnées pour les contrats de service et les types associés dans une assemblée

svcutil myServiceHost.exe /serviceName:myServiceName - Générer des documents de métadonnées pour un service et tous les services associés Contrats et types de données dans un assemblage

svcutil myServiceHost.exe /dconly - Générer des documents de métadonnées pour les types de données dans un assemblage

svcutil /validate /serviceName:myServiceName myServiceHost.exe - Vérifier l'hébergement du service

svcutil /t:xmlserializer myContractLibrary.exe - Générer des types de sérialisation pour les types XmlSerializer utilisés par n'importe quel service Contrats à l'Assemblée

9
bijayk

Pour ceux qui recherchent toujours la réponse et ne peuvent pas utiliser la version 2012, Visual Studio 2015 et .Net 4.5 ont mis à jour l'outil svcutil.exe afin qu'il utilise le commutateur/serviceContract afin de générer une classe pouvant ensuite être implémentée en tant que service .svc. Vous devrez peut-être également fournir des commutateurs/syncOnly/wrapped/messageContract, en fonction des disques XSD d'origine. 

3
Dean

Je pense que l'outil .NET 4.5 Contract First, intégré à Visual Studio 2012 en tant que tâche de construction, vous aidera à générer les fichiers de service dont vous avez besoin. 

Les contrats de service doivent souvent être créés à partir de services existants. Dans .NET Framework 4.5, les classes de contrat de données peuvent être créées automatiquement à partir de services existants à l'aide de l'outil contrat en premier. Pour utiliser cet outil, le fichier de définition de schéma XML (XSD) doit être téléchargé localement. l'outil ne peut pas importer des contrats de données distants via HTTP. 

http://msdn.Microsoft.com/en-us/library/hh674270(v=vs.110).aspx

1
Seymour

Svcutil.exe génère le proxy du client de service en fonction du langage WSDL (Web Service Description Language) du service.

Ouvrez l'invite de commande de visual studio et exécutez la commande

svcutil http://localhost/MyService/Service.svc  /Language=c#  /t:Code  /out:C:\Service\ServiceProxy.cs /config:C:\Service\ServiceProxy.config

il génère deux fichiers dans le dossier C:\Service, le fichier proxy et le fichier de configuration,

Plus de détails ici .

0
Rajeev Tiwari