3 votes

Obtention de l'erreur "Aucun code n'a été généré" lors de la création d'un proxy de service web à l'aide de SVCUTIL.EXE.

Lorsque l'on essaie de créer un proxy de service web (WCF) à l'aide de SVCUTIL.EXE (en ligne de commande ou via Visual Studio), j'obtiens le message d'erreur absurde ci-dessous.

Note : Il n'y a pas de problème avec le service car il fonctionne très bien sur une autre machine. Il s'agit d'une nouvelle installation de Windows et le service est sur ma boîte locale. Générer le même proxy sur ma machine en utilisant une URL sur une autre machine fonctionne bien.

Qu'est-ce qui se passe ?

Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to download metadata from 'https://ws1.example.com/ShoppingCartWS/WCF/ShoppingCartWCF.svc?wsdl' using WS-Metadata Exchan
Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageCont
Error: Schema with target namespace '' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IShoppingCart']

Error: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IShoppingCart']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IShoppingCart']   

.....    

Error: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IShoppingCart']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IShoppingCart1']

Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IShoppingCart1']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='ShoppingCartWCF']/wsdl:port[@name='BasicHttpBinding_IShoppingCart1']

Generating files...
Warning: No code was generated.
If you were trying to generate a client, this could be because the metadata documents did not contain any valid contracts or services
or because all contracts/services were discovered to exist in /reference assemblies. Verify that you passed all the metadata documents to the tool.

Warning: If you would like to generate data contracts from schemas make sure to use the /dataContractOnly option.

6voto

Simon_Weaver Points 31141

Ce site Warning: No code was generated Le message d'erreur peut être déclenché par un manque de permissions pour l'utilisateur du pool d'applications sur l'ordinateur. C:\Windows\Temp répertoire (oui vraiment !)

Si vous obtenez cette erreur, je vous suggère d'abord de passer à la ligne de commande si vous essayez d'utiliser la boîte de dialogue "Ajouter une référence de service". Exécutez cette commande avec Fiddler ouvert pour l'URL de votre service.

 svcutil.exe https://dev.example.com/ShoppingCartWS/WCF/ShoppingCartWCF.svc?wsdl

Si vous voyez l'une des requêtes renvoyer le message 500 (en rouge) et la réponse suivante, vous avez probablement le même problème que moi.

ReadResponse() failed: The server did not return a response for this request.                                                                            

Vérifie juste C:\Windows\Temp et ajoutez simplement l'utilisateur de votre pool d'applications pour avoir les permissions. J'ai juste triché et ajouté Everyone Mais si la sécurité est importante, vous devez trouver le nom d'utilisateur correct du pool d'applications dans IIS.

C'est ici que j'ai trouvé la solution - merci beaucoup ! .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X