InvalidOperationException beim erstellen von wcf-web service-Instanz
Ich habe einen WCF-Webdienst, auf den verwiesen wird, von einer Klassenbibliothek. Nach dem das Projekt ausgeführt wird, bei der Erstellung der Dienst-client-Objekt innerhalb einer Klasse, Bibliothek, erhalte ich eine InvalidOperationException mit der Meldung:
Konnte nicht finden, Standard-endpoint-element, das Verweise Vertrag
'MyServiceReference.IMyService " im ServiceModel-client
Abschnitt "Konfiguration". Dies könnte sein, weil keine Konfigurationsdatei wurde
für Ihre Anwendung gefunden haben, oder weil kein Endpunkt element matching
dieser Vertrag könnte in der client-element.
Den code, den ich benutze zum erstellen der Instanz:
myServiceClient = new MyServiceClient();
wo MyServiceClient erbt von
System.ServiceModel.ClientBase
Wie löse ich dieses?
Hinweis: ich habe eine seperate Konsole-Anwendung, die erstellt einfach den gleichen service-Objekt und macht Aufrufe, und es funktioniert ohne Probleme.
InformationsquelleAutor Serhat Ozgel | 2008-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie diese Einstellungen in der Konfiguration auf der wichtigsten app-config-Datei. .NET-Anwendung (die ruft die Bibliothek-Klasse) nutzt Daten aus seiner eigenen config-Datei nicht aus der Musikbibliothek config-Datei.
InformationsquelleAutor aku
Oder Sie können den Endpunkt in Ihrem code:
http://msdn.microsoft.com/en-us/library/ms731862.aspx
InformationsquelleAutor Trond
Hatte ich einen ähnlichen Fall. Ich hatte eine Klasse-Bibliothek, die sogenannten web-service, dann hatte ich eine .EXE-Datei, die aufgerufen wird die Klasse lib .DLL. Ich denke, es ist der .EXE-config-Datei, die verwendet wird, und nicht dass der .DLL-config.
Aber, wie Richard gesagt, ich musste voll qualifizieren den namespace. Es ist ein bisschen wie ein Schmerz.
Unten ist genau das, was ich geändert habe. Die Schmerzen, die ich hatte, es zu ändern an zwei stellen,
eine in der Referenz.cs, der generiert wird, wenn Sie erstellen eine service-Referenz und die andere in der config-Datei. So, jedesmal wenn ich die web-service und nicht ein "Update Reference" habe ich, um die änderung der C# - code wieder.
1) Sie müssen tatsächlich die ConfigurationName in der Referenz.cs wie folgt:
Aus:
[System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = " RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]
:
[System.ServiceModel.ServiceContractAttribute(Namespace = "http://TFBIC.RCT.BizTalk.Orchestrations", ConfigurationName = "TFBIC.RCT.HIP.Components.RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations")]
2) und dann ändern sich auch die "Vertrags" - Wert in allen zugehörigen app.config (.dll ' s und .exe) wie folgt:
Aus:
<endpoint address=http://nxwtest08bt1.dev.txfb-ins.com/TFBIC.RCT.BizTalk.Orchestrations/WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ITwoWayAsync"
Vertrag="RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations"
name="WSHttpBinding_ITwoWayAsync">
:
<endpoint address=http://nxwtest08bt1.dev.txfb-ins.com/TFBIC.RCT.BizTalk.Orchestrations/WcfService_TFBIC_RCT_BizTalk_Orchestrations.svc
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ITwoWayAsync"
Vertrag=" TFBIC.RCT.HIP.Komponenten.RCTWebService.WcfService_TFBIC_RCT_BizTalk_Orchestrations" name="WSHttpBinding_ITwoWayAsync">
Nur klar zu sein - wie konnte ich wissen, was der vollständige namespace wurde?
Das Programm der namespace wurde TFBIC.RCT.HIP. Innerhalb dieser C# - code hat eine zusätzliche
namespace-Anweisung:
InformationsquelleAutor NealWalters
Es würde wahrscheinlich helfen, wenn Sie veröffentlicht Ihre app.config-Datei, da diese Art von Fehler tendenziell zu einem problem in der
<endpoint>
block. Stellen Sie sicher, dass der Vertrag Attribut scheint das richtige für Sie.Bearbeiten: Versuchen Sie, voll qualifizierende Ihr Vertrag Wert ist; verwenden Sie den vollständigen namespace. Ich denke, das ist notwendig.
InformationsquelleAutor Richard Morgan