2013-11-23 60 views
0

我有這種方法調用並嘗試打開服務主機以偵聽請求。它能夠創建服務主機並啓用元數據發佈,但在嘗試打開服務主機時會失敗。ServiceHost無法開始偵聽郵件

當它到達host.Open()不能打開服務主機,以便我從客戶端發送我的消息。 爲什麼我的服務沒有啓動?

public void startOperator() 
    { 

     Uri baseAddress = new Uri("net.tcp://localhost/Test"); 

     // Create the ServiceHost. 
     using (ServiceHost host = new ServiceHost(typeof(Operator), baseAddress)) 
     { 
      // Enable metadata publishing. 
      ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
      smb.HttpGetEnabled = true; 
      smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15; 
      host.Description.Behaviors.Add(smb); 

      // Open the ServiceHost to start listening for messages. Since 
      // no endpoints are explicitly configured, the runtime will create 
      // one endpoint per base address for each service contract implemented 
      // by the service. 
      host.Open(); 

      Console.WriteLine("The service is ready at {0}", baseAddress); 
      Console.WriteLine("Press <Enter> to stop the service."); 
      Console.ReadLine(); 

      // Close the ServiceHost. 
      host.Close(); 
     } 

任何幫助表示讚賞..thanks

回答

1

,因爲它與你的net.tcp結合衝突不要smb.HttpGetEnabled = true選項。評論完後,代碼適用於我。

+0

真棒回答.. – HXD

+0

現在我移動了相同的代碼並創建了一個控制檯應用程序以用作主機應用程序。但我得到類型或命名空間名稱'操作員'找不到(您是否缺少使用指令或程序集引用?)。如果按F12,我可以看到操作員代碼,但我不明白爲什麼我會收到錯誤。並且我擁有所需的所有參考 – HXD

+0

沒關係我創建的項目將其目標框架設置爲.Net框架客戶端配置文件我將其更改爲.Net框架工作唯一選項並構建成功.. – HXD