2013-04-10 108 views
1

我有一個託管在託管Windows服務中的WCF服務,該服務是根據this手冊開發的。在App.config中我指定了以下內容:託管在託管Windows服務中的WCF服務無法從另一臺計算機訪問

<service name="Inpas.Unipos.LicenseManager.SamService.Service" 
      behaviorConfiguration="SamServiceBehavior"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8000/SamService/service"/> 
     </baseAddresses> 
    </host> 
    <endpoint address="" 
       binding="wsHttpBinding" 
       contract="Inpas.Unipos.LicenseManager.SamService.IService" /> 
    <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
    </service> 

在客戶我連接到這種方式服務:

public void ConnectToService(string host, string port) 
{ 
    var binding = new WSHttpBinding(); 
    var endpoint = new EndpointAddress(string.Format("http://{0}:{1}/SamService/service", host, port)); 
    var channelFactory = new ChannelFactory<IService>(binding, endpoint); 
    _client = channelFactory.CreateChannel(); 
    _client.Get2X2(); 
} 

在本地機器上它工作正常,但如果我嘗試連接到從服務另一臺機器 - 我得到一個異常:

EndpointNotFoundException 消息:有沒有終點在http://10.xx.xx.xx:8000/SamService/service是可以接受的消息聽。這通常是由不正確的地址或SOAP操作引起的。

我在做什麼錯?

+0

您是否能夠從另一個盒子中看到服務IE? – Dhawalk 2013-04-10 16:05:51

+0

@Dhawalk什麼是盒子?如何檢查? – Zharro 2013-04-10 16:35:22

+1

您是否在其他機器上使用'http:// localhost:8000/SamService/service'作爲**服務**的地址?如果是這樣,您需要將地址更改爲機器名稱(或域名)(例如http://www.mydomain.com/「 - localhost僅指運行程序的計算機。 – Tim 2013-04-10 17:57:51

回答

0

我打開入站端口的服務固定它:單擊開始按鈕,然後點擊控制面板

  • 打開Windows防火牆。在搜索框中,鍵入防火牆,然後單擊Windows防火牆。
  • 在左側窗格中,單擊高級設置。如果系統提示您輸入管理員密碼或進行確認,請輸入密碼或提供確認。
  • 在具有高級安全性的Windows防火牆對話框的左窗格中,單擊入站規則,然後在右窗格中單擊新建規則。
  • 按照新建入站規則嚮導中的說明(在此嚮導的「協議和端口」步驟中選擇Tcp)。