我有一个WCf服务,可以调用外部restfull服务。我已经在Windows服务环境中部署了WCF服务,并且我能够在本地运行Windows服务并且它工作正常,但是当我在Windows服务器中部署服务时。它给出了以下错误。
System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应174.143.127.78:443 在System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure,Socket s4,Socket s6,Socket& socket,IPAddress& address,ConnectSocketState state,IAsyncResult asyncResult,Int32 timeout,Exception& exception) ---内部异常堆栈跟踪结束--- 在System.Net.HttpWebRequest.GetResponse()
是否需要在服务器上配置任何内容?任何线索为什么它在本地工作但不在服务器
答案 0 :(得分:1)
好的,错误消息中的关键信息是“连接尝试失败”,它告诉我们您的客户端从未到达主机,然后超时。
所以我要检查的第一件事是主机上的防火墙设置。您的网址(在错误消息中列出)表明您正在尝试通过443(通常是SSL)访问该服务。确保您的服务器打开该端口以进行流入和流出。顺便说一句,即使您在通信中使用SSL,也不需要使用443作为您的端口。您可以在允许的范围内使用任何所需的端口。
如果这不起作用,我会在我的客户端上运行Fiddler的副本并再次尝试,让Fiddler充当中间人代理来捕获和记录来回的信息。这通常是调试WCF通信问题的好方法。
此外,检查Web服务是否可访问的最简单方法是只需在任何浏览器地址栏中键入URL(格式为:http:// servername:port / ServiceName / ServiceMethod),然后按Enter键。这样做将联系Web服务,如果您收到WSDL消息,您知道您拥有正确的地址并且可以开始通信。
祝你好运。如果这回答了问题,请不要忘记将其标记为这样。答案 1 :(得分:0)
承载您的服务的服务器正在尝试与174.143.127.78:443通信。那可能就是您的RESTful服务部署的地方。您将必须与IT部门一起打开这些设备上的端口,以便它们可以相互通信。如果无法做到这一点,请尝试查看是否可以将两个服务都托管在同一个盒子上。