98 votes

Erreur WCF - Impossible de trouver l'élément de point de terminaison par défaut qui fait référence au contrat 'UserService.UserService'

Toutes idées sur la façon de résoudre ceci ?

UserService.UserServiceClient userServiceClient = new UserServiceClient();
            userServiceClient.GetUsersCompleted += new EventHandler(userServiceClient_GetUsersCompleted);
            userServiceClient.GetUsersAsync(searchString);

.

Impossible de trouver l'élément de point de terminaison par défaut qui référence le contrat 'UserService.UserService' dans la section de configuration du client ServiceModel. Cela pourrait être dû à l'absence de fichier de configuration pour votre application, ou parce qu'aucun élément de point de terminaison correspondant à ce contrat n'a été trouvé dans l'élément client.

Résolu !

Je n'ai pas mentionné qu'il s'agissait d'une application Silverlight. J'avais la référence wcf dans une DLL qui avait son propre fichier "ServiceReferences.ClientConfig". J'ai déplacé le contenu du fichier ServiceReferences.ClientConfig de la DLL vers le projet Silverlight principal et cela a fonctionné.

0 votes

Que se passe-t-il si l'application exécutant le DLL est tierce, par exemple si le DLL est un plugin pour une autre application?

186voto

sprite Points 2048

J'ai rencontré le même problème. Mon application était également une application Silverlight et le service était appelé à partir d'une bibliothèque de classes avec un UserControl personnalisé qui était utilisé dans celle-ci.

La solution est simple. Copiez les définitions des points de terminaison du fichier de configuration (par exemple ServiceReferences.ClientConfig) de la bibliothèque de classes dans le fichier de configuration de l'application Silverlight. Je sais que vous vous attendiez à ce que cela fonctionne sans avoir à le faire, mais apparemment quelqu'un à Redmond était en vacances ce jour-là.

51 votes

Cette solution est valable pour les projets ASP.NET et MVC également. Si vous ajoutez le service à une bibliothèque de classes, cela ne fonctionnera pas immédiatement, récupérez la section system.serviceModel de l'app.config dans votre projet de bibliothèque et placez-la dans votre web.config.

5 votes

Il semble que cela soit vrai pour tout type de projet, j'utilisais quartz.net en tant que service Windows et j'avais une tâche dans une assembly différente qui faisait référence au service web. Ça a également fonctionné pour moi. Merci.

2 votes

Salut, cela a également fonctionné pour un projet Windows Phone. Comme le dit @thiagoleite, il semble que cela fonctionne pour la plupart des types de projets.

45voto

Vishal Points 166

Vous pouvez également définir ces valeurs de manière programmatique dans la bibliothèque de classes, ce qui évitera le déplacement inutile des fichiers de configuration à travers la bibliothèque. Le code d'exemple pour BasicHttpBinding simple est -

BasicHttpBinding basicHttpbinding = new BasicHttpBinding(BasicHttpSecurityMode.None);
basicHttpbinding.Name = "BasicHttpBinding_YourName";
basicHttpbinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
basicHttpbinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

EndpointAddress endpointAddress = new EndpointAddress("http:///Service1/Service1.svc");
Service1Client proxyClient = new Service1Client(basicHttpbinding,endpointAddress);

0 votes

@wooncherk, ma bibliothèque de classe vient juste de faire référence à un wsdl. Où devrais-je mettre ce code? Je le compile dans un dll C# et mets le dll dans mes fichiers d'application, où je le référence depuis IronPython. Merci

12voto

Mike Gledhill Points 2105

Juste au cas où quelqu'un rencontre le même problème lors de l'utilisation de WPF (plutôt que WCF ou Silverlight) :

J'ai eu cette erreur, lorsque je me connectais à un service Web. Lorsque mon code était dans la solution de l'application WPF "principale", aucun problème, cela fonctionnait parfaitement. Mais lorsque j'ai déplacé le code vers la solution de la couche DAL plus logique, une exception était lancée.

Impossible de trouver l'élément de point de terminaison par défaut qui fait référence au contrat 'MyWebService.MyServiceSoap' dans la section de configuration du client ServiceModel. Cela peut être dû au fait qu'aucun fichier de configuration n'a été trouvé pour votre application, ou parce qu'aucun élément de point de terminaison correspondant à ce contrat n'a été trouvé dans l'élément client.

Comme l'a indiqué "Sprite" dans ce fil de discussion, vous devez copier manuellement la balise endpoint.

Pour les applications WPF, cela signifie copier la balise endpoint du fichier app.config dans ma solution DAL vers le fichier app.config dans la solution de l'application WPF principale.

0 votes

C'est génial, mais ce serait mieux en tant que commentaire court sous ma propre réponse, tout comme "Adam Pope" l'a fait. Cela serait lu par beaucoup plus de personnes.

2 votes

@sprite: J'aurais ajouté un commentaire, mais les commentaires de StackOverflow sont toujours affichés sous forme d'un seul paragraphe. Pour une réponse de 5 paragraphes comme la mienne, cela aurait résulté en un seul paragraphe long, illisible et peu convivial. Écrire une réponse séparée m'a permis de donner une réponse plus claire, qui est plus susceptible d'aider les autres utilisateurs (qui, soyons honnêtes, est le but des sites comme celui-ci)

6voto

Dale C Points 1

J'ai rencontré le même problème, pour une raison quelconque Visual Studio n'a pas mis à jour le fichier web config lorsque j'ai d'abord ajouté le service. J'ai trouvé que la mise à jour de la référence du service a également résolu ce problème.

Étapes :

  1. Naviguez jusqu'au dossier de Référence de Service
  2. Étendez-le
  3. Cliquez avec le bouton droit et sélectionnez Mettre à jour la Référence de Service
  4. Observez la mise à jour du web Config

0 votes

Oui, cela a fonctionné pour moi. J'utilise une référence de service wsdl tiers et j'obtenais cette erreur jusqu'à ce que je mette à jour la référence du service

0 votes

Pour moi aussi. C'était évident car cela fonctionnait bien et soudainement plus. J'ai peut-être apporté une modification et n'ai pas mis à jour la référence au service.

4voto

Modifiez le web.config du service WCF en tant que "adresse de point de terminaison="" liaison="basicHttpBinding"..." (précédemment liaison="wsHttpBinding") Après avoir construit l'application, dans "ServiceReferences.ClientConfig" ""configuration> a la valeur. Ensuite, cela fonctionnera correctement.

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