Irgendwelche Ideen, wie man das behebt?
UserService.UserServiceClient userServiceClient = new UserServiceClient();
userServiceClient.GetUsersCompleted += new EventHandler<GetUsersCompletedEventArgs>(userServiceClient_GetUsersCompleted);
userServiceClient.GetUsersAsync(searchString);
.
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_UserService"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:52185/UserService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_UserService"
contract="UserService.UserService"
name="BasicHttpBinding_UserService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="Shell.Silverlight.Web.Service3Behavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<services>
<service behaviorConfiguration="Shell.Silverlight.Web.Service3Behavior"
name="Shell.Silverlight.Web.Service3">
<endpoint address=""
binding="basicHttpBinding"
contract="Shell.Silverlight.Web.Service3" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Das Standardendpunktelement, das auf den Vertrag 'UserService.UserService' verweist, konnte im Abschnitt zur Konfiguration des ServiceModel-Clients nicht gefunden werden. Dies kann daran liegen, dass für Ihre Anwendung keine Konfigurationsdatei gefunden wurde oder dass im Client-Element kein Endpunktelement gefunden wurde, das diesem Vertrag entspricht.
Aufgelöst!
Ich habe nicht erwähnt, dass dies eine Silverlight-Anwendung ist. Ich hatte die wcf-Referenz in einer DLL, die eine eigene "ServiceReferences.ClientConfig" -Datei hatte. Ich habe den Inhalt der ServiceReferences.ClientConfig der DLL in das Silverlight-Hauptprojekt verschoben, und es hat funktioniert.
Antworten:
Ich hatte das gleiche Problem. Meine Anwendung war auch eine Silverlight-Anwendung, und der Dienst wurde aus einer Klassenbibliothek mit einem benutzerdefinierten UserControl aufgerufen, das darin verwendet wurde.
Die Lösung ist einfach. Kopieren Sie die Endpunktdefinitionen aus der Konfigurationsdatei (z. B. ServiceReferences.ClientConfig) der Klassenbibliothek in die Konfigurationsdatei der Silverlight-Anwendung. Ich weiß, dass Sie erwarten würden, dass es funktioniert, ohne dies tun zu müssen, aber anscheinend hatte jemand in Redmond an diesem Tag Urlaub.
quelle
web.config
?Sie können diese Werte auch programmgesteuert in der Klassenbibliothek festlegen. Dadurch wird ein unnötiges Verschieben der Konfigurationsdateien in der Bibliothek vermieden. Der Beispielcode für einfaches BasciHttpBinding lautet -
quelle
Nur für den Fall, dass jemand bei der Verwendung von WPF auf dasselbe Problem stößt (anstelle von WCF oder Silverlight):
Ich hatte diesen Fehler beim Herstellen einer Verbindung zu einem Webdienst. Als mein Code in der "Haupt" WPF-Anwendungslösung war, kein Problem, es funktionierte perfekt. Wenn ich den Code jedoch auf die sinnvollere DAL-Layer-Lösung verschob, wurde die Ausnahme ausgelöst.
Wie von "Sprite" in diesem Thread angegeben, müssen Sie das Tag manuell kopieren.
Für WPF-Apps bedeutet dies, dass das Tag aus der app.config in meiner DAL-Lösung in die app.config in der Hauptlösung der WPF-Anwendung kopiert wird.
quelle
Ich bin auf dasselbe Problem gestoßen, aus welchem Grund auch immer, Visual Studio hat die Webkonfiguration beim ersten Hinzufügen des Dienstes nicht aktualisiert. Ich habe festgestellt, dass durch das Aktualisieren der Dienstreferenz auch dieses Problem behoben wurde.
Schritte:
quelle
Ändern Sie die web.config des WCF-Dienstes als "Endpoint Address =" "Binding =" BasicHttpBinding "..." (zuvor Binding = "wsHttpBinding"). Nach dem Erstellen der App hat "ServiceReferences.ClientConfig" "" configuration> den Wert . Dann wird es gut funktionieren.
quelle
Benennen Sie die von svcutil.exe erzeugte output.config in app.config um. es hat bei mir funktioniert.
quelle
Haben Sie eine Schnittstelle, die Ihre "UserService" -Klasse implementiert?
Ihre Endpunkte sollten eine Schnittstelle für das Vertragsattribut angeben:
quelle
Ich bin mir nicht sicher, ob dies ein Problem ist. Endpunkt und Bindung haben beide den gleichen Namen
quelle
Ich bin mir nicht sicher, ob es wirklich ein Problem ist, aber ich sehe, dass Sie denselben Namen für Ihre Bindungskonfiguration haben ().
Normalerweise versuche ich, meine Endpunkte so etwas wie "UserServiceBasicHttp" oder ähnliches aufzurufen (die "Bindung" hat hier wirklich nichts zu tun), und ich versuche, meine Bindungskonfigurationen so etwas wie ".... Konfiguration" aufzurufen, z "UserServiceDefaultBinding", um mögliche Namenskonflikte zu vermeiden.
Marc
quelle
Musste den Dienst in der aufrufenden App.config-Datei hinzufügen, damit er funktioniert. Stellen Sie sicher, dass Sie es aber doch tun. Das schien für mich zu funktionieren.
quelle
Dieses Problem tritt auf, wenn Sie Ihren Dienst über eine andere Anwendung verwenden. Wenn die Anwendung eine Konfigurationsdatei hat, fügen Sie einfach Ihre Dienstkonfigurationsinformationen zu dieser Datei hinzu. In meiner Situation gab es keine Konfigurationsdatei, daher verwende ich diese Technik und sie hat einwandfrei funktioniert. Speichern Sie einfach die URL-Adresse in der Anwendung, lesen Sie sie und senden Sie sie mit der BasicHttpBinding () -Methode als Parameter an die Dienstanwendung. Dies ist eine einfache Demonstration, wie ich es gemacht habe es:
quelle
Für diejenigen, die mit AX 2012 AIF- Diensten arbeiten und versuchen, dort C # anzurufen oder VB-Projekt in AX (x ++) und unter solchen Fehlern leiden: "Standardendpunkt konnte nicht gefunden werden" ... oder "Kein Vertrag gefunden" ... gehen Sie zurück Fügen Sie diese Zeilen zu Ihrem Visual Studio (c #) -Projekt hinzu und fügen Sie diese Zeilen hinzu, bevor Sie Ihren Service-Client definieren. Stellen Sie dann das Projekt bereit und starten Sie den AX-Client neu .
quelle
Wenn Sie eine WPF-Anwendung mit PRISM-Framework verwenden, sollte die Konfiguration in Ihrem Startprojekt vorhanden sein (dh in dem Projekt, in dem sich Ihr Bootstrapper befindet).
Kurz gesagt, entfernen Sie es einfach aus der Klassenbibliothek und fügen Sie es in ein Startprojekt ein.
quelle