2016-05-05 1 views
0

Ich kann meinen WCF-Client nicht mit meinem WCF-Server in einem Localhost-Netzwerk verbinden. Der Fehler, ich bin immer ist die folgende:WCF-Client kann keine Verbindung zum WCF-Server mit Fehler herstellen

Fehler beim auf den lokalen Host-Server verbunden: Es konnte kein Standard Endpunktelement finden, der Vertrag ‚MyServiceReference.IMyService‘ im Servicemodel-Client-Konfiguration Abschnitt verweist. Dies liegt möglicherweise daran, dass keine Konfigurationsdatei für Ihre Anwendung gefunden wurde oder dass kein Endpunktelement gefunden wurde, das mit diesem Vertrag übereinstimmt, das im Clientelement gefunden wurde.

Die Serververbindung ist die folgende. Hier ist der Code:

_host = new ServiceHost(typeof(MyService)); 

//Create Metadata exchange for the service 
ServiceMetadataBehavior mexBehavior = new ServiceMetadataBehavior(); 
_host.Description.Behaviors.Add(mexBehavior); 

//Add service endpoints for the service and mex 
_host.AddServiceEndpoint(typeof(IMyService), new NetNamedPipeBinding(), "net.pipe://localhost/WFC_Server/MyService.svc"); 
_host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexNamedPipeBinding(), "net.pipe://localhost/WFC_Server/MyService.svc/mex"); 
_host.Open(); 

Ich richte meinen Client nicht ordnungsgemäß mit dem Server verbinden. Weiß jemand warum? Hier ist der Code:

var callback = new MyServiceCallback(); 
var instanceContext = new InstanceContext(callback); 
var client = new MyServiceReference.MyServiceClient(instanceContext); 
client.Endpoint.Address = new EndpointAddress("net.pipe://localhost/WFC_Server/MyService.svc"); 
      client.OpenSession(); 

Weiß jemand, warum mein Client keine Verbindung zum Server herstellt?

+0

Haben Sie in Client-Konfiguration Endpunkt für diesen Dienst? – BWA

+0

Der Client funktioniert, wenn ich die WCF-Verbindung unter App.config-Datei belasse, aber wenn ich versuche, die App.config-Datei auf .CS-Codierung zu replizieren, gibt es mir eine harte Zeit – user2692270

+0

Was möchten Sie erreichen? Ändern Sie einfach die Adresse des Dienstes? – BWA

Antwort

0

Ich habe das Problem repliziert und das Problem behoben. 1. Geben Sie die Endpunktadresse beim Erstellen des Clients an.

var callback = new MyServiceCallback(); 
       var instanceContext = new InstanceContext(callback); 
       EndpointAddress remoteAddress = new EndpointAddress("net.pipe://localhost/WFC_Server/MyService.svc"); 
       var client = new MyServiceClient(instanceContext,new NetNamedPipeBinding(),remoteAddress); 
       client.Hello(); // call the function 
  1. Im Server können Sie wie folgt anmelden:

Code:

  Uri address1 = new Uri("http://localhost/WFC_Server/"); 
      Uri address2 = new Uri("net.pipe://localhost/WFC_Server/"); 
      ServiceHost _host = new ServiceHost(typeof(MyService), address1,address2); 

      //Create Metadata exchange for the service 
      ServiceMetadataBehavior mexBehavior = new ServiceMetadataBehavior(); 
      mexBehavior.HttpGetEnabled = true; 
      _host.Description.Behaviors.Add(mexBehavior); 


      //Add service endpoints for the service and mex 
      _host.AddServiceEndpoint(typeof(IMyService), new NetNamedPipeBinding(), "MyService.svc"); 

      _host.AddServiceEndpoint(
       ServiceMetadataBehavior.MexContractName, 
       MetadataExchangeBindings.CreateMexHttpBinding(), 
       "mex" 
      ); 
      _host.Open(); 

ich die folgenden Schnittstellen als Beispiel verwendet haben :

class MyService : IMyService 
    { 
     public void Hello() 
     { 
     Console.WriteLine("Hello From Server.."); 
     } 
    } 

    [ServiceContract(CallbackContract = typeof(ICallbackService))] 
    internal interface IMyService 
    { 
     [OperationContract] 
     void Hello(); 
    } 


    [ServiceContract] 
    public interface ICallbackService 
    { 
     [OperationContract] 
     void CallClient(); 
    }