Impossible de trouver l'élément de noeud final par défaut qui fait référence au contrat
Je sais que cela a été battu à mort, mais je ne peux pas obtenir que cela fonctionne comme il se doit.
J'ai un service WCF avec plusieurs contrats.
Ils travaillent tous très bien quand les appelant directement par ex. http://merlin.com/CompanyServices/CompanyWcfService.svc/Get_Document_Dates_Received/223278
J'ai utilisé ce service WCF avec succès sur des Formulaires InfoPath et Nintex Workflow.
Maintenant, je créer un simple ASP.Net demande, par exemple, comme cela a été fait dans http://www.webcodeexpert.com/2013/04/how-to-create-and-consume-wcf-services.html.
J'ai été en mesure d'ajouter une référence de service comme décrit dans l'article.
J'ai ajouté un bouton de la forme, et ajouté le code suivant dans le Button1_Click
événement:
protected void Button1_Click(object sender, EventArgs e)
{
ServiceReference1.CompanyWcfServiceClient x = new ServiceReference1.CompanyWcfServiceClient();
var result = x.Get_Document_Dates_Received("223278");
}
quand je clique sur le bouton j'obtiens l'erreur:
"Impossible de trouver le point de terminaison par défaut de l'élément que les références du contrat" ServiceReference1.ICompanyWcfService " dans le ServiceModel section de configuration de client. Ce pourrait être parce que le fichier de configuration n'a été trouvé pour votre application, ou parce qu'aucun d'extrémité de l'élément correspondant à ce contrat peut être trouvé dans le client de l'élément."
J'ai donc essayé d'ajouter le suivant pour le web.config: (copié directement à partir du web.fichier de configuration de la CompanyWcfService.
<system.serviceModel>
<services>
<service name="CompanyWcfServices.CompanyWcfService" behaviorConfiguration="ServiceBehavior">
<endpoint address="" binding="webHttpBinding" contract="CompanyWcfServices.ICompanyWcfService" behaviorConfiguration="webHttpEndpointBehavior" >
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">
</endpoint>
</service>
</services>
<bindings>
<webHttpBinding>
<binding>
<security mode="None">
</security>
</binding>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name ="webHttpEndpointBehavior">
<webHttp helpEnabled ="true" faultExceptionEnabled="true" automaticFormatSelectionEnabled="true"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
J'obtiens la même erreur exact, il y a quelque chose d'autre se passe.
J'ai finalement cédé et a appelé le service comme celui-ci:
HttpWebRequest request = WebRequest.Create(@"http://merlin/Companyservices/CompanyWcfService.svc/Get_Document_Dates_Received/223278") as HttpWebRequest;
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = null;
var result = "";
try
{
response = request.GetResponse() as HttpWebResponse;
if (response.StatusCode == HttpStatusCode.OK)
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
result = reader.ReadToEnd();
}
}
}
catch (Exception ex)
{
result = "";
}
J'ai passé des heures à lire des posts et la plupart d'entre eux suggérons de copier la configuration des informations sur le web.fichier de configuration. Cela semble problématique pour moi (outre le fait qu'il ne semble pas fonctionner). Que faire si j'ai besoin de consommer un tiers de service WCF? Dois-je demander les informations de configuration à partir de la troisième partie? Et inversement, si je créer un service WCF conçu pour être consommé par des tiers, ai-je besoin de fournir le fichier de config?
source d'informationauteur user1337493
Vous devez vous connecter pour publier un commentaire.
L'erreur indique que vous n'avez pas un point de terminaison définis dans la section de configuration de client. Lorsque vous ajoutez le service de référence à votre projet, il doit créer le client section pour vous. Si non, alors dans le web.config de votre application dans le système.serviceModel section ajouter le suivant
Si nous avons de l'architecture en couches assurez-vous de
Si votre projet est de référencement, d'une bibliothèque et d'essayer d'utiliser la WCF fonctions de fonctions de la bibliothèque, alors vous pouvez essayer de copier le client endpoint du projet de fichier de config à la dll fichier de configuration. Quelque chose comme ce qui m'est arrivé il y a un moment que la bibliothèque que j'ai référencé dans le projet ne serait pas utiliser le projet de fichier de configuration (dans lequel le client a été configuré depuis que le service a été référencé) mais sa propre de sorte que le résultat a été le système n'a pas pu trouver le point de terminaison de configurations.
Dans mon cas, j'ai eu un projet WPF référencement externe UserControl qui avait un service de référence. J'ai dû ajouter le service de référence pour le projet principal.
L'ajout de liaison et les valeurs du client à partir de l'app.config pour le web par défaut.config résolu mon problème.
En fait le truc c'était d'utiliser la svcutil.exe pour créer le proxy. J'avais essayé de créer le proxy par le biais de Visual Studio "Ajouter un Service" de l'assistant. Une fois que je l'ai fait, la configuration est un jeu d'enfant.
SvcUtil.exe
Quand il s'agit de la WCF, il nécessite généralement la configuration définie dans le fichier de configuration de l'exécutable qui l'appelle.
Donc, si vous avez la malchance d'avoir à appeler un WCF DLL à partir de l'intérieur d'un programme VB6 (comme cela peut être le cas lors de l'utilisation d'un COM interop .NET module, par exemple), et vous avez besoin de déboguer le programme VB6, alors vous aurez besoin pour créer un VB6.exe.fichier de config dans le répertoire où VB6.exe est situé.
A défaut, le ci-dessus peut provoquer un "impossible de trouver le point de terminaison par défaut de l'élément qui fait référence à un contrat".
Comme une solution de contournement, on peut charger la dll de fichier de configuration à l'exécution, puis appeler le constructeur de la servir avec un Service de Liaison et un EndpointAddress en tant que paramètres (obtenu à partir de la dll de la config).