Add service reference bei Verwendung netTcp binding
Ich habe einen WCF-service, dass ich getestet durch kopieren und seinen Schnittstellen zum eine Beispiel-client-Projekt aus.
Jetzt will ich richtig arbeiten, indem ein service-Referenz.
Der Dienst gehostet wird, in windows-hosting (mit installUtil
).
Der service hat 2 Projekte - externe Verweise (Schnittstellen + datacontracts) und Interna (Implementierungen).
Für einige Grund es didn ' T haben eine app.config also ich habe eine manuell:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="ExecutionService" behaviorConfiguration="Default">
<endpoint name="TCPEndpoint" address="" binding ="netTcpBinding" contract="Externals.IExecutionService"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:3040/ExecutionService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Versuchen, um eine service-Referenz aus meinem Beispiel-client die folgende Fehlermeldung verursacht:
Metadata contains a reference that cannot be resolved: 'net.tcp://localhost:3040/ExecutionService/Externals.IExecutionService'.
There was no endpoint listening at net.tcp://localhost:3040/ExecutionService/Externals.IExecutionService that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
If the service is defined in the current solution, try building the solution and adding the service reference again.
Sah ich hier, dass es keine Notwendigkeit in der app.config.
Ich bin ein wenig verwirrt und ich bin ein Anfänger mit WCF
.
Wie kann ein nettes WPF
app Referenz von meinem Dienst? Ich möchte den service auf windows gehostet ist und ich nicht wollen, ziehen Sie die dlls mit mir.
Bearbeiten
Ich fügte hinzu, ein Metadaten-Endpunkt und meiner appconfig sieht nun wie folgt aus:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="ExecutionService" behaviorConfiguration="Default">
<endpoint name="TCPEndpoint"
address=""
binding ="netTcpBinding"
contract="Externals.IExecutionService"/>
<endpoint address="mex"
binding="maxHttpBinding"
contract="Externals.IExecutionService"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:3040/ExecutionService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Ich habe versucht, das hinzufügen einer service-Referenz mithilfe net.tcp://localhost:3040/ExecutionService
, net.tcp://localhost:3040/ExecutionService/Externals
und net.tcp://localhost:3040/ExecutionService/Externals/IExecutionService
und ich bin noch immer der gleiche Fehler.
InformationsquelleAutor Noich | 2013-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie tun:
Dann Ihre service-Referenz verfügbar unter:
net.tcp://localhost:3040/ExecutionService/mex
als Basisadresse ist
net.tcp://localhost:3040/ExecutionService
und die relative Adresse für die mex-Endpunkt ist festgelegtmex
Fertige app.config ist unter:
Für einen schnellen test, ob die Konfiguration korrekt ist, ich benutzt die Konsole host-app als ein service-host.
Programm.cs:
Führen Sie die Konsole app und versuchen Sie auf Dienst hinzufügen Bezug auf Ihr Projekt durch
net.tcp://localhost:3040/ExecutionService/mex
.InformationsquelleAutor milanio
Auf den ersten Blick, Sie haben vergessen, Metadaten-Endpunkt
InformationsquelleAutor SalientBrain
Ändern:
:
Bemerken es nicht maxHttpBinding aber mexTcpBinding, Sie hatte typo, als auch dort.
InformationsquelleAutor Admir Tuzović