2014-02-24 123 views
1

我有一個WCf服務調用外部restfull服務。我已經在Windows服務環境中部署了WCF服務,並且我能夠在本地運行Windows服務,並且它工作正常,但是當我在Windows服務器中部署服務時。它給出了以下錯誤。連接到來自服務器的寧靜服務的錯誤

System.Net.WebException:無法連接到遠程服務器---> System.Net.Sockets.SocketException:連接嘗試失敗,因爲連接方在一段時間後沒有正確響應,或者建立的連接失敗,因爲連接的主機未能響應System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress)上的174.143.127.78:443 012.在System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure,Socket s4,Socket s6,套接字&套接字,IP地址&地址,ConnectSocketState狀態,IAsyncResult asyncResult,Int32超時,例外&例外) ---在System.Net.HttpWebRequest.GetResponse內部異常堆棧跟蹤--- 結束()

有沒有什麼需要在服務器配置?任何線索爲什麼它在本地工作,但不在服務器上

回答

1

好的,您的錯誤信息中的關鍵信息是「連接嘗試失敗」,它告訴我們您的客戶端永遠不會到達主機,然後超時。

因此,我要檢查的第一件事是主機上的防火牆設置。您的URL(在錯誤消息中列出)表示您嘗試在443上訪問服務(通常爲SSL)。確保您的服務器已打開該端口進出流量。順便說一句,即使你在通信中使用SSL,你也不需要使用443作爲你的端口。您可以在允許的範圍內使用您想要的任何端口。

如果這不起作用,我會在我的客戶端上運行Fiddler的副本,然後再試一次,讓Fiddler充當中間代理來捕獲和記錄來回信息。這通常是調試WCF通信問題的好方法。

此外,檢查Web服務是否可訪問的最簡單方法是在任何瀏覽器地址欄中輸入URL(格式爲:http:// servername:port/ServiceName/ServiceMethod)並回車。這樣做會聯繫Web服務,如果您收到WSDL消息,則知道您擁有正確的地址,並且可以開始通信。

祝你好運。如果這回答了這個問題,不要忘記標記爲這樣。

+0

謝謝Brian。它正確配置IE後允許連接到Windows Server上的外部URL。 –

+0

有趣..我永遠不會想到這一點。 – Brian