2011-01-05 5 views
4

Ich habe begonnen, WCF zu lernen und habe einige HTTP-Dienste erfolgreich getestet. Jetzt habe ich versucht, einen selbst gehosteten WCF-Dienst mit net.pipe-Bindung zu erstellen. Im Folgenden finden Sie die Konfigurationsdatei für den Service: -Service-Referenz zu einem net.pipe-Dienst hinzufügen

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<system.serviceModel> 
    <services> 
     <service behaviorConfiguration="MEX" name="InProcService.MyService"> 
      <endpoint address="MyService" 
       binding="netNamedPipeBinding" bindingConfiguration="" contract="InProcService.IMyService" /> 
      <endpoint address="Mex" binding="mexNamedPipeBinding" 
       contract="IMetadataExchange" /> 
      <host> 
       <baseAddresses> 
        <add baseAddress="net.pipe://localhost/InProcService/" /> 
        <add baseAddress="http://localhost:8001/InProcService/" /> 
       </baseAddresses> 
      </host> 
     </service> 
    </services> 
    <behaviors> 
    <serviceBehaviors> 
     <behavior name="MEX" > 
     <serviceMetadata httpGetEnabled="true"/> 
     </behavior> 
    </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 
</configuration> 

Jetzt in meinem Host-Anwendung, ich den Dienst am Start mit: -

 ServiceHost host = new ServiceHost(typeof(MyService)); 
     host.Open(); 
     Console.WriteLine("Service started"); 

     host.Close(); 

Der Dienst ordnungsgemäß gestartet wird, wenn dieser Code ausgeführt wird.

Jetzt, wenn ich in meiner Client-Anwendung versuche, die Service-Referenz zu diesem laufenden Dienst hinzufügen, ist es nicht in der Lage, es zu finden. Gibt es etwas, das ich nicht oder falsch mache?

Ich würde jede mögliche Hilfe schätzen, die ich auf dieses erhalten kann.

Prost, Abhi.

+0

Welche URL übergeben Sie an "Add Service Reference"? Welchen Fehler bekommst du genau? Probieren Sie auch die Befehlszeile svcutil.exe Programm - Sie sollten in der Lage sein, die Fehler zu sehen. –

+0

Wie verweisen Sie auf Ihren Service, wenn Sie eine Servicereferenz hinzufügen? Die Endpunktadresse sollte folgendermaßen aussehen: net.pipe: // localhost/InProcService/MyService – volpav

+0

Die Fehlermeldung lautete: - "Metadaten enthalten eine Referenz, die nicht aufgelöst werden kann: 'net.pipe: // localhost/InProcService/MyService'. Es gab keinen Endpunkt, der auf net.pipe: // localhost/InProcService/MyService empfing, der die Nachricht annehmen konnte.Dies wird oft durch eine falsche Adresse oder eine falsche SOAP-Aktion verursacht.Siehe InnerException, falls vorhanden, für weitere Details: Der Pipe-Endpunkt "net.pipe: // localhost/InProcService/MyService" konnte auf Ihrem lokalen Computer nicht gefunden werden. Wenn der Dienst in der aktuellen Lösung definiert ist, versuchen Sie, die Lösung zu erstellen und den Dienstverweis erneut hinzuzufügen. " Irgendwelche Ideen? –

Antwort

2

Der Dienst wird danach geöffnet und geschlossen. Wenn Sie den Client starten, ist der Server bereits geschlossen. Daher wird Console.ReadKey() benötigt, bevor es geschlossen wird.