Das Standard-Endpunktelement konnte nicht gefunden werden

Ich habe einen Proxy zu einem Webservice zu einer VS2008 / .NET 3.5-Lösung hinzugefügt. Beim Erstellen des Clients .NET wird dieser Fehler ausgegeben:

Das Standardendpunktelement, das auf den Vertrag “IMySOAPWebService” im ServiceModel-Clientkonfigurationsabschnitt verweist, konnte nicht gefunden werden. Dies liegt möglicherweise daran, dass für Ihre Anwendung keine Konfigurationsdatei gefunden wurde oder weil im Client-Element kein Endpunktelement gefunden wurde, das diesem Vertrag entspricht.

Die Suche nach diesem Fehler sagt mir, dass ich den gesamten Namespace im Vertrag verwenden soll. Hier ist meine app.config mit vollem Namespace:

   

Ich führe XP local (ich erwähne dies, weil einige Google-Treffer win2k3 erwähnen) Die app.config wird in app.exe.config kopiert, so dass das auch nicht das Problem ist.

Irgendwelche Hinweise?

Solutions Collecting From Web of "Das Standard-Endpunktelement konnte nicht gefunden werden"

“Dieser Fehler kann auftreten, wenn Sie den Dienst in einer classnbibliothek aufrufen und die classnbibliothek von einem anderen Projekt aufrufen.”

In diesem Fall müssen Sie die WS-Konfigurationseinstellungen in die Hauptprojekte app.config aufnehmen, wenn es sich bei Winapp oder web.config um eine Web-App handelt. Dies ist der Weg, um selbst mit PRISM und WPF / Silverlight zu gehen.

Nachdem ich mehrere Optionen getestet habe, habe ich das schließlich getriggers

Vertrag = “IMySOAPWebService”

dh ohne den vollen Namespace in der Config. Aus irgendeinem Grund wurde der vollständige Name nicht richtig aufgetriggers

Ich triggerse dies (ich denke, wie andere vielleicht vorgeschlagen haben), indem ich die Bindungs- und Endpunktadress-Instanzen selbst erstellte – weil ich keine neuen Einstellungen zu den Konfigurationsdateien hinzufügen wollte (dies ist ein Ersatz für vorhandenen Bibliothekscode, der weit verbreitet ist, und zuvor eine ältere Web-Service-Referenz usw. verwendet haben, und so wollte ich in der Lage sein, dies einzufügen, ohne überall neue Konfigurationseinstellungen hinzuzufügen.

 var remoteAddress = new System.ServiceModel.EndpointAddress(_webServiceUrl); using (var productService = new ProductClient(new System.ServiceModel.BasicHttpBinding(), remoteAddress)) { //set timeout productService.Endpoint.Binding.SendTimeout = new TimeSpan(0,0,0,_webServiceTimeout); //call web service method productResponse = productService.GetProducts(); } 

Bearbeiten

Wenn Sie https verwenden, müssen Sie BasicHttpsBinding lieber als BasicHttpBinding .

Ich hatte das gleiche Problem. Es stellt sich heraus, dass Sie für eine REFERENZ im Web die URL als ersten Parameter für den Konstruktor angeben müssen:

 new WebService.WebServiceSoapClient("http://myservice.com/moo.aspx"); 

Bei einer neuen Web SERVICE REFERENCE müssen Sie einen Namen angeben, der auf einen Endpunkteintrag in der Konfiguration verweist:

 new WebService.WebServiceSoapClient("WebServiceEndpoint"); 

Mit einem entsprechenden Eintrag in Web.config oder App.config :

     

Ziemlich verdammt schwer, den Tunnelblick auf “es funktionierte in einem älteren Programm” zu entfernen …

Ich hatte eine Situation wie diese, wo ich hatte

  • WCF-Service Hosted irgendwo
  • Hauptprojekt
  • Consumer-Projekt vom Typ ‘classnbibliothek’ mit Service-Referenz auf einen WCF-Service
  • Hauptprojekt ruft Methoden vom Konsumentenprojekt auf

Jetzt hatte das Consumer-Projekt alle zugehörigen Konfigurationseinstellungen im meiner app.config, und es wurde immer noch derselbe Fehler wie oben angezeigt.

Alles, was ich getan habe, ist das selbe Tag in der APP.CONFIG-Datei meines Hauptprojekts, und schließlich waren wir gut unterwegs.

Das wirkliche Problem, soweit in meinem Fall, war das Lesen der falschen Konfigurationsdatei. Anstelle von app.config des Verbrauchers wurde die Konfiguration von main proj angegeben. Ich brauchte zwei Stunden, um das herauszufinden.

“Dieser Fehler kann auftreten, wenn Sie den Dienst in einer classnbibliothek aufrufen und die classnbibliothek von einem anderen Projekt aufrufen.”

“In diesem Fall müssen Sie die WS-Konfigurationseinstellungen in die Hauptprojekte app.config einbeziehen, wenn es sich um Winapp handelt, oder web.config, wenn es sich um eine Web-App handelt. Dies ist der richtige Weg für PRISM und WPF / Silverlight.”

Ja, aber wenn Sie das Hauptprojekt nicht ändern können (z. B. Orchard CMS), können Sie die WCF-Dienstkonfiguration in Ihrem Projekt beibehalten.

Sie müssen einen Service-Helper mit der Client-Generierungsmethode erstellen:

 public static class ServiceClientHelper { public static T GetClient(string moduleName) where T : IClientChannel { var channelType = typeof(T); var contractType = channelType.GetInterfaces().First(i => i.Namespace == channelType.Namespace); var contractAttribute = contractType.GetCustomAttributes(typeof(ServiceContractAttribute), false).First() as ServiceContractAttribute; if (contractAttribute == null) throw new Exception("contractAttribute not configured"); //path to your lib app.config (mark as "Copy Always" in properties) var configPath = HostingEnvironment.MapPath(String.Format("~/Modules/{0}/bin/{0}.dll.config", moduleName)); var configuration = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = configPath }, ConfigurationUserLevel.None); var serviceModelSectionGroup = ServiceModelSectionGroup.GetSectionGroup(configuration); if (serviceModelSectionGroup == null) throw new Exception("serviceModelSectionGroup not configured"); var endpoint = serviceModelSectionGroup.Client.Endpoints.OfType().First(e => e.Contract == contractAttribute.ConfigurationName); var channelFactory = new ConfigurationChannelFactory(endpoint.Name, configuration, null); var client = channelFactory.CreateChannel(); return client; } } 

und benutze es:

 using (var client = ServiceClientHelper.GetClient(yourLibName)) { ... get data from service ... } 

Siehe Details in diesem Artikel .

Dieser hat mich verrückt gemacht.

Ich verwende Silverlight 3 Prism (CAB) mit WCF

Wenn ich einen WCF-Dienst in einem Prism-Modul aufruft, erhalte ich denselben Fehler:

Das Standardendpunktelement, das auf den Vertrag ‘IMyService’ im Konfigurationsabschnitt des Service-Modell-Clients verweist, konnte nicht gefunden werden. Dies liegt möglicherweise daran, dass für Ihre Anwendung keine Konfigurationsdatei gefunden wurde oder weil im Clientelement kein Endpunktelement gefunden wurde, das mit diesem Vertrag übereinstimmt

Es stellt sich heraus, dass es in der .xap-Datei der Shell nach einer Datei ServiceReference.ClientConfig sucht, nicht in der Datei ServiceReference.ClientConfig des Moduls. Ich habe meinen Endpunkt und die Bindung zur vorhandenen Datei ServiceReferences.ClientConfig in meiner Silverlight Shell-Anwendung hinzugefügt (sie ruft ihre eigenen WCF-Dienste auf).

Dann musste ich die Shell-App neu erstellen, um die neue .xap-Datei für den ClientBin-Ordner meines Webprojekts zu generieren.

Jetzt funktioniert diese Codezeile endlich:

 MyServiceClient myService = new MyServiceClient(); 

Ich erhalte diesen Fehler in einer ASP.NET-Anwendung, in der der WCF-Dienst zu einer classnbibliothek hinzugefügt wurde, die der ASP.NET-Anwendung als referenzierte DLL-Datei im Ordner bin hinzugefügt wird. Um den Fehler zu beheben, mussten die Konfigurationseinstellungen in der app.config-Datei in der classnbibliothek, die auf den WCF-Dienst verweist, in die web.config-Einstellungen für die ASP.NET-Site / App kopiert werden.

Ich habe gefunden (sowie in die App.config der Client-UI kopieren, als ich eine Schnittstelle der classnbibliothek verwendet) Ich musste den Namen der Bindung mit dem Namen der Service-Referenz (meine ist ServiceReference im Folgenden).

z.B:

  

anstelle des standardmäßig generierten:

  

Ich hatte das gleiche Problem, aber das Ändern des Vertragsnamensraums funktionierte nicht für mich. Also habe ich einen .Net 2 Style Web Reference anstelle eines .Net 3.5 Service Reference versucht. Das hat funktioniert.

Um einen Webverweis in Visual Studio 2008 zu verwenden, klicken Sie auf “Serviceverweis hinzufügen” und dann auf “Erweitert”, wenn das Dialogfeld angezeigt wird. Darin finden Sie eine Option, mit der Sie eine Web-Referenz anstelle einer Service-Referenz verwenden können.

Mehrere Antworten treffen hier auf die richtige Lösung, wenn Sie mit dem unübersichtlich gewordenen Fehler konfrontiert werden, den Dienst aus einer classndatei zu referenzieren: Kopieren Sie die Konfigurationsinformationen in Ihre app.config web.config Ihrer Konsole oder Windows App. Keine dieser Antworten scheint Ihnen zu zeigen, was Sie kopieren sollen. Lassen Sie uns versuchen, das zu korrigieren.

Hier ist, was ich aus der Konfigurationsdatei meiner classnbibliothek in die Konfigurationsdatei meiner Konsolen-App kopiert habe, um diesen verrückten Fehler für einen Dienst namens “TranslationServiceOutbound” zu umgehen.

Sie möchten grundsätzlich alles im Bereich system.serviceModel :

           

Das Testen einer Nicht-Bibliotheksanwendung, die einen Dienst verwendet, kann dieses Problem verursachen.

Die Informationen, die andere eingegeben haben, adressieren die Ursache dafür. Wenn Sie versuchen, automatisierte Testfälle zu schreiben, und die zu testende Einheit tatsächlich die Service-Schnittstelle aufruft, müssen Sie die Service-Referenz zum Testprojekt hinzufügen. Dies ist eine Variante der Anwendung, die den Bibliothekstyp Fehler verwendet. Ich habe dies jedoch nicht sofort erkannt, weil mein Code, der die Schnittstelle nutzt, nicht in einer Bibliothek ist . Wenn der Test jedoch tatsächlich ausgeführt wird, wird er von der Testbaugruppe ausgeführt, nicht von der getesteten Baugruppe.

Das Hinzufügen eines Dienstverweises zum Komponententestprojekt hat mein Problem behoben.

Ich habe eine Situation, die in der Unit Test ist. Ich habe die app.config-Datei in das Komponententestprojekt kopiert. Daher enthält das Komponententestprojekt auch Endpunktinformationen.

Ich habe dieses Problem einmal gesehen. Es war, weil ich noch die Schnittstelle entwickelte, die WCF-Dienst verwendet. Ich habe die Testanwendung konfiguriert und die Entwicklung fortgesetzt. In der Entwicklung habe ich dann einige Namensräume der Dienste geändert. Also habe ich in web.config “system.serviceModel -> client -> endpoint -> contract” überprüft, um der WCF-class zu entsprechen. Dann ist das Problem getriggers.

Der Namespace in Ihrer Konfiguration sollte den Rest des Namespace-Pfads nach dem Standard-Namespace Ihres Clients (wie in den Projekteigenschaften konfiguriert) widerspiegeln. Basierend auf Ihrer geposteten Antwort ist meine Vermutung, dass Ihr Client so konfiguriert ist, dass er sich im Namespace “Fusion.DataExchange.Workflows” befindet. Wenn Sie den Client-Code in einen anderen Namespace verschoben haben, müssen Sie die Konfiguration aktualisieren, damit sie mit dem verbleibenden Namespace-Pfad übereinstimmt.

Nur für jemand anderen mit dem gleichen Problem; Ich schrieb einen Komponententest für meine Methode, die versuchte, sich mit meinem Dienst zu verbinden. Es ist jedes Mal mit derselben Ausnahme gescheitert – ich habe keine Ahnung warum. Wenn ich es von einer Winform lief, funktioniert es gut.

Ich habe ein selbes Problem. Ich benutze den WCF-Service in der classnbibliothek und rufe die classnbibliothek von den Windows-Anwendungsprojekten auf. Aber ich vergesse Änderung in der des Windows-Anwendungsprojektes selben das der app.Config-Datei der classnbibliothek.
Lösung: Änderung der Konfiguration des äußeren Projekts mit der gleichen Konfiguration der classnbibliothek.

Wenn Sie den Webdienst in Ihrer classnbibliothek referenzieren, müssen Sie app.config in Ihre Windows-Anwendung oder -Konsolenanwendung kopieren

Lösung: Änderung der Konfiguration des äußeren Projekts mit der gleichen Konfiguration der classnbibliothek.

Arbeitete für mich

Hi, ich habe das gleiche Problem gefunden, aber die beste Lösung ist, das .NET Ihre clientseitige Konfiguration konfigurieren zu lassen. Was ich entdecke, ist dies, wenn ich eine Service-Referenz mit einer Abfragezeichenfolge von http: /namespace/service.svc hinzufüge? Wsdl = wsdl0 es erstellt keine Konfigurationsendpunkte auf der Client-Seite. Aber wenn ich die Datei? Wsdl-wsdl0 entferne und nur die URL http: /namespace/service.svc verwende, wird die Endpunktkonfiguration in der Clientkonfigurationsdatei erstellt. für kurze remove die “? WSDL = WSDL0”.

Legen Sie nicht die Service-Client-Deklarationszeile als classnfeld an, sondern erstellen Sie die Instanz bei jeder Methode, die verwendet wurde. Das Problem wird also behoben. Wenn Sie eine Service-Client-Instanz als classnfeld erstellen, tritt ein Entwurfszeiterrors auf!

Falls Sie WPF-Anwendungen mit PRISM-Framework verwenden, sollte die Konfiguration in Ihrem Startprojekt (dh in dem Projekt, in dem sich Ihr Bootstrapper befindet) vorhanden sein.

Dieser Fehler kann auftreten, wenn Sie den Dienst in einer classnbibliothek aufrufen und die classnbibliothek von einem anderen Projekt aufrufen.

Es gibt verschiedene Möglichkeiten, dieses Problem zu beheben. Für mich ist das CRM-Produkt, das ich verwende, in nativem Code geschrieben und kann meine .NET-DLL aufrufen, aber ich renne in die Konfigurationsinformationen, die bei / über der Hauptanwendung sein müssen. Für mich ist die CRM-Anwendung nicht .NET, also musste ich sie in meine machine.config-Datei schreiben (nicht dort, wo ich sie haben möchte). Da meine Firma Websense verwendet, fiel es mir sogar schwer, sogar die Service-Referenz hinzuzufügen, da das Problem mit dem Proxy-Authentifizierungsproblem 407 aufgetreten war und eine Änderung an der Maschine erforderlich war.

Proxy-Lösung:

Um die WCF-Service-Referenz zum Laufen zu bringen, musste ich die Informationen von der app.config meiner DLL zur Hauptanwendungskonfiguration kopieren (aber für mich war das machine.config). Und ich musste auch die Endpunktinformationen in dieselbe Datei kopieren. Sobald ich das gemacht habe, fängt es an, für mich zu arbeiten.

OK. Mein Fall war ein wenig anders, aber schließlich habe ich die Lösung dafür gefunden: Ich habe eine Console.EXE -> DLL -> Aufrufen von WS1 -> DLL -> Aufrufen von WS2

Ich hatte beide Konfigurationen des Service-Modells von WS1 und WS2 in der Console.EXE.config wie empfohlen. – hat das Problem nicht getriggers.

Aber es hat immer noch nicht funktioniert, bis ich die WebReference von WS2 zu WS1 hinzugefügt habe und nicht nur zu der DLL, die tatsächlich den Proxy von WS2 erstellt und aufruft.

Ich hatte das gleiche Problem
Ich habe eine Desktop-App verwendet und den Global Weather Web-Service verwendet

Ich löschte die Service-Referenz und fügte die Web-Referenz und Problem getriggers, danke

Die Lösung für mich bestand darin, den Endpunktnamen aus dem Attribut Endpoint Name im Client web.config zu entfernen, das der Proxy verwenden konnte

 ChannelFactory _channelFactory = new ChannelFactory(""); 

brauchte nur den ganzen Tag um zu trainieren. Auch der Vertragsname war falsch, nachdem dieser Fix vorhanden war, obwohl er beim Auftreten des ersten Fehlers falsch war. Doppelt dann dreifach nach Vertragsnamen suchen Leute !! zugeschrieben: Ian

Erlaube mir, noch eine weitere Sache hinzuzufügen. ( Tom Haighs Antwort spielt schon darauf an, aber ich möchte explizit sein)

Meine web.config Datei hatte folgendes definiert:

    

Ich habe bereits basicHttpsBinding für eine Referenz verwendet, aber dann habe ich eine neue Referenz hinzugefügt, die basicHttpBinding (no s) benötigt. Alles, was ich tun musste, war das Hinzufügen zu meinem protocolMapping wie folgt:

     

Wie LR richtig hervorhebt, muss dies an den richtigen Stellen definiert werden. Für mich bedeutete das sowohl in der app.config meines Unit-Test-Projekts als auch in der web.config des Haupt-Service-Projekts.

Ich hatte diesen Fehler, als ich den Vertrag im Konfigurationsdateielement ohne den globalen Bereichsoperator referenzierte.

dh

  

funktioniert, aber

  

gibt den Fehler “Konnte das Standard-Endpunktelement, das den Vertrag referenziert, nicht finden”.

Die Assembly, die MyNamepsace.IMyContract enthält, befindet sich in einer anderen Assembly als die Hauptanwendung, daher kann dies die Notwendigkeit der Verwendung der globalen Bereichsauflösung erklären.

Ich habe den gleichen Fehler und ich versuche einige viele Dinge, aber nicht funktioniert, als ich bemerkte, dass mein “Vertrag” war nicht das gleiche für ganze Projekte, ich änderte den Vertrag als wäre für alle Projekte innerhalb der Lösung gleich und als es funktionierte. Dies ist Projekt A

    

Projekt B:

    

Schließlich habe ich für beide geändert als:

    

Wenn Sie eine Servicereferenz hinzufügen

Bildbeschreibung hier eingeben

Vorsicht vor dem Namespace, in dem du schreibst:

Bildbeschreibung hier eingeben

Sie sollten es an den Namen Ihrer Schnittstelle anhängen: