Wie gebe ich einen Namespace Vertrag in der XML-Konfiguration eines WCF-Endpunkt?
-
11-10-2019 - |
Frage
Ich habe diese WCF-Service-Vertrag bekam (stark vereinfacht, aber achten Sie auf die Namespace ist es in):
namespace Foo.Services.BarService
{
[ServiceContract]
interface BarContract {... }
}
In meiner app.config
(Client-Seite), konfiguriere ich einen Endpunkt für einig Service:
<endpoint address="..."
binding="..."
contract="Foo.Services.BarService.BarContract" />
Dies führt jedoch zu einem Fehler zu sagen, dass kein Endpunkt in der Konfiguration des Client gefunden wurde, dass Stützen BarService.BarContract
. Ich kann nur für diesen Fehler loszuwerden, indem den contract
Attributwert BarService.BarContract
ändert (das heißt durch den Namensraum zu entfernen).
Warum ist das so? Wo könnte dieser Fehler kommen aus? Warum muss ich den Namespace Teil eines Vertragstyp nicht erwähnt? Sollte nicht das Ergebnis noch in WCF keinen passenden Endpunkt zu finden?
Antworten auf die Fragen in @Ladislav Mrnka Kommentar unten:
-
Ich spreche von der Client-Seite. (Ich habe vergessen, dieses Bit zu erwähnen,. Sorry dafür) Dieser Fehler kann möglicherweise von der Server-Seite kommen?
-
erzeugte ich den oben Service-Vertrag, zusammen mit einer
BarClient
Klasse, die implementiert es, über Visual Studio Dienstverweis hinzufügen Möglichkeiten. I angegebene URL desBarService
, die von jemandem anderen ausgeführt wird. Da habe ich angegeben, dass der Dienst in derFoo.Services.BarService
Namespace gesetzt werden. -
Ich wollte den Dienst direkt über die
BarClient
Klasse automatisch generiert für mich verwenden, nicht über eineChannelFactory<BarContract>
.
Lösung
Erstellen von Client von Add Service Referenz nicht recreate Namespace-Struktur aus dem Dienst. Alle erstellten Art und Verträge werden in neuen Namensraum durch den Namen des Dienstes Referenz definiert gelegt. Also ich Sie Ihren Service Referenz Barservice namens erraten. Client-Konfiguration müssen Namen der generierten Aufträge folgen.