2016-12-14 71 views
0

我已經從WSDL實現了一項非常基本的服務,我使用的是ServiceHost對象,它似乎在本地工作。我使用代碼服服務是這樣的:C#ServiceHost似乎忽略了VM中主機的連接

static void Main(string[] args) 
    { 
     Uri httpUri = new Uri("http://192.168.18.1:8080/"); 

     using (ServiceHost hService = new ServiceHost(typeof(TritonClientClient), httpUri)) 
     { 
      // hService.AddServiceEndpoint(typeof(ITritonClient), new BasicHttpBinding(), "http://localhost:8000/BasicService");     

      hService.Open(); 

      Console.WriteLine("Listening. Press any key to close..."); 
      Console.ReadLine(); 
      Console.WriteLine("Closing..."); 

      hService.Close(); 
     } 
    } 

似乎在本地工作,因爲我可以瀏覽到http://192.168.18.1:8080/?wsdl和我得到的服務描述文件。

問題是我需要從虛擬機(使用VMware)訪問此服務。本機配置爲具有「主機專用」網絡適配器,並且我可以從來賓ping主機,反之亦然。但是,我無法直接從主機訪問瀏覽器中的服務。

在主機使用Wireshark的我可以看到客人試圖啓動TCP握手,但沒有人回答:

Wireshark capture

根據記錄,該主機的IP是192.168.18.1和來賓的IP是192.168.18.128。 ServiceHost中有什麼我需要做的,所以它回答了VM的請求?

+0

您是否在Windows防火牆中打開了此端口?本地測試意味着流量來自可信來源。從VM測試意味着它不會。因此有所不同。 –

回答

0

確保您的防火牆設置不會阻止主機上的端口8080。

+0

就是這樣。我已經禁用專用網絡的防火牆,但看起來像Windows認爲192.168.x.x網絡是公共網絡。回家的窗戶,你喝醉了。 –