2012-02-18 82 views
0

請問您能指出我在這裏失蹤的內容嗎?由於「沒有端點偵聽」錯誤,無法連接到NetTcpBinding WCF服務

我有兩個示例項目。兩個控制檯應用程序(.Net 3.5)。這裏是「服務器」的一面:

如果
class Program 
{ 
    static void Main() 
    { 
     var baseAddresses = new Uri("net.tcp://localhost:9000/WcfServiceLibrary/svc"); 

     var host = new ServiceHost(typeof(UiWcfSession), baseAddresses); 

     var reliableSession = new ReliableSessionBindingElement { Ordered = true, InactivityTimeout = TimeSpan.MaxValue }; 
     var binding = new CustomBinding(reliableSession, new TcpTransportBindingElement()) { ReceiveTimeout = TimeSpan.MaxValue }; 

     host.AddServiceEndpoint(typeof(IClientFulfillmentPipeService), binding, k.WinSvcEndpointName); 
     host.Open(); 

     Thread.CurrentThread.Join(); 
    } 
} 

不知道它的重要,但這裏是IClientFulfillmentPipeService

[ServiceContract(CallbackContract = typeof (IClientFulfillmentPipeServiceCallbacks), SessionMode = SessionMode.Required)] 
    public interface IClientFulfillmentPipeService 
    { 
    [OperationContract(IsOneWay = true)] 
    void Initialize(int uiProcessId, string key); 
    } 


    [ServiceContract] 
    public interface IClientFulfillmentPipeServiceCallbacks 
    { 
    [OperationContract(IsOneWay = true)] 
    void ShowBalloonTip(int timeout, string tipTitle, string tipText, BalloonTipIcon tipIcon); 
    } 

小片段,最終客戶

private void OpenConnection() 
    { 

     try 
     { 
      var ep = new EndpointAddress("net.tcp://localhost:9000/WcfServiceLibrary/svc"); 

      var reliableSession = new ReliableSessionBindingElement {Ordered = true}; 

      Binding binding = new CustomBinding(reliableSession, new TcpTransportBindingElement()); 
      reliableSession.InactivityTimeout = TimeSpan.MaxValue; 
      var pipeFactory = new DuplexChannelFactory<IClientFulfillmentPipeService>(this, binding, ep); 
      commChannel = pipeFactory.CreateChannel(); 

      ((IChannel) commChannel).Open(OpenConnectionTimeout); 
     } 
     catch (Exception ex) 
     { 
      Log.ErrorFormat("The communication channel to the windows service could not be established. {0}", ex.Message); 
     } 
    } 

客戶端無法與System.ServiceModel.EndpointNotFoundException除外,說:「沒有端點監聽net.tcp:// localhost:9000/WcfServiceLibrary/svc可以接受消息。這是通常是由不正確的地址或SOAP操作引起的。請參閱的InnerException,如果存在的話,更多的細節。」

這是它使用命名管道的生產代碼修改,我想將其轉換爲TCP傳輸。

謝謝!

回答

1

我不小心留下k.WinSvcEndpointName在服務器的端點定義中。這就是問題所在。

相關問題