Self-Hosted Wcf bedient wsdl, aber 404, wenn aufgerufen

8

Ich versuche, eine Singleton-Instanz eines Dienstes selbst zu hosten, und ich verliere mich offensichtlich auf einer Ebene der Indirektion ...

Ich habe eine Basisadresse von http://localhost:8050/ . Es stört mich nicht, wo der Service-Endpunkt so lang ist, wie er vorhersehbar ist. Im Moment versuche ich /Manage/ zu benutzen.

Ich kann zur Basisadresse navigieren und eine WSDL sehen. Wenn ich das wsdl scanne, zeigt es auf /Manage/ ..

%Vor%

Wenn ich die WSDL mit dem WcfTestClient verwende, Es listet alle korrekten Methoden auf, aber der Aufruf einer der folgenden Methoden löst die folgende Ausnahme aus:

  

System.ServiceModel.EndpointNotFoundException: In Ссылка wurde kein Endpunkt abgehört, der die Nachricht annehmen könnte. Dies wird oft durch eine falsche Adresse oder eine falsche SOAP-Aktion verursacht. Weitere Informationen finden Sie unter InnerException (falls vorhanden).

%Vor%

Protokollmeldungen zeigen, dass meine Instanzmethoden nie aufgerufen werden. Der Dienst tritt nicht in einen fehlerhaften Zustand ein, er sieht nur so aus, als wäre er nicht vorhanden.

Ich höre wie folgt:

%Vor%

Und die Methode Listen() wie folgt aufrufen:

%Vor%

Wie kann ich herausfinden, was das Problem ist / debug weiter?

Zusätzliche Informationen: Der Servicevertrag und die minimale Implementierung:

%Vor%

Und die Implementierung:

%Vor%

Der Testclient kann den Dienst und die Methoden sehen, löst die obige Ausnahme jedoch aus, wenn ich auf "Aufrufen ..." klicke.

Edit: localhost löst standardmäßig IPv6 auf, daher habe ich versucht, 127.0.0.1 an beiden Enden explizit zu verwenden. Kein Unterschied.

Ich habe versucht, den obigen Code in ein neues Projekt zu übernehmen und das gleiche Problem zu bekommen. Das Ganze auf der Maschine eines anderen laufen zu lassen, hat auch nicht geholfen.

Service Trace Viewer

Ausführen eines Service-Trace auf der Serverseite Das Betrachten der Ergebnisse im Viewer ergibt:

  

Es konnte kein Kanal nach einer eingehenden Nachricht gesucht werden. Entweder wurde der Endpunkt oder die SOAP-Aktion nicht gefunden.

Config-Datei: Da ich die ausführbare Datei in der Lage sein muss, eine Entscheidung darüber zu treffen, welcher Wcf-Dienst zur Laufzeit angezeigt wird, habe ich keinen Wcf-bezogenen Code in der Konfigurationsdatei.

    
Basic 20.04.2015, 13:21
quelle

1 Antwort

3

Dies ist wahrscheinlich eine nicht übereinstimmende Client / Service-Bindung. Bitte überprüfen Sie die Test-Client-Bindung. Sie sollten auch einen Komponententest erstellen, indem Sie einen Proxy von der WSDL generieren.

Ok. Ich habe versucht, Ihr Problem zu reproduzieren, und ich habe es geschafft, den Host aufzurufen, indem ich "HostNameComparisonMode = HostNameComparisonMode.WeakWildcard" lösche, um einen Standard-Basistp-Endpunkt zu erhalten. Warum brauchst du das?

    
christophe vialatte 23.04.2015, 14:53
quelle

Tags und Links