Web服务:如何调试System.Net.WebException?

时间:2014-01-02 13:44:03

标签: c# .net web-services sockets

我有一个客户端作为Windows服务运行以连接到Web服务。我在可以从浏览器访问Web服务的虚拟机上运行该Windows服务;但是,当我尝试从客户端运行服务时,它不起作用。

以下是例外:

  

System.ServiceModel.EndpointNotFoundException:http://pmht.plexxis.com/clientsdk.asmx没有可以接受该消息的端点。这通常是由错误的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)。 ---> System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机未能在System.Net.Sockets.Socket上响应10.0.1.96:80 .DoConnect(端点endPointSnapshot,为SocketAddress的SocketAddress)在System.Net.ServicePoint.ConnectSocketInternal(布尔connectFailure,插座s4中,插座S6中,插座&安培;插座,ip地址&安培;地址,ConnectSocketState状态,IAsyncResult的asyncResult,异常&安培;例外)---结束内部异常堆栈跟踪---在System.Net.HttpWebRequest.GetRequestStream(TransportContext&安培;上下文)在System.Net.HttpWebRequest.GetRequestStream()在System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()---的内端异常堆栈跟踪---服务器堆栈跟踪:在System.ServiceModel.Channels.HttpOutput.WebRequestHttpOutput.GetOutputStream()在System.ServiceModel.Channels.HttpOutput.Send(时间跨度时间出)在System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(消息消息,时间跨度超时)在System.ServiceModel.Channels.RequestChannel.Request(消息消息,时间跨度超时)在System.ServiceModel.Dispatcher.RequestChannelBinder .Request(消息消息,时间跨度超时)在System.ServiceModel.Channels.ServiceChannel.Call在System.ServiceModel.Channels.ServiceChannelProxy(字符串动作,布尔单向,ProxyOperationRuntime操作,对象[]项,对象[]奏,时间跨度超时) System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)中的.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)在[0]处重新抛出异常:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)at at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培; MSGDATA,的Int32类型)在Client.Core.PMH.ClientSDKSoap.Login(的Int32客户端Id,串键)在Client.Core.PMH.ClientSDKSoapClient.Login(的Int32客户端Id,串键)在Client.Core.ClientService.OnStart(字符串[ ] args)

我尝试使用Fiddler Web Debugger来确定发生了什么;然而,无济于事。它表明没有任何东西被发送或接收。我还要注意,如果我回滚虚拟机,它可以工作。

在此故障开始之前,我重启了VM。当计算机启动时,我看到了一些关于公钥证书的事情;我认为它可能与问题有关。我用谷歌搜索并尝试了推荐的结果,结果是一样的,所以我不是百分之百确定这与问题有什么关系。此外,另一个VM可以毫无问题地连接。

修改 根据评论我试图从VM ping网站。请求超时;然而,我然后做了一个ipconfig / flushdns并开始解析。不幸的是,再次抛出同样的异常。

如何开始调试此类问题?

2 个答案:

答案 0 :(得分:1)

您可能有两个项目,一个是Web,另一个是服务。

要开始使用此问题进行调试,可能有两种方法:

1)(a)您必须首先构建并运行服务项目。 (b)然后运行Web项目,它将起作用。

2)

转到Web项目的web.config,您将找到如上所述的“http://pmht.plexxis.com/clientsdk.asmx”端点地址。

要测试它,请将其更改为localhost:2732并首先在您的系统上进行测试。(可能是2732,您必须先运行服务层然后再运行web)

另外,我需要知道客户端正在使用哪种虚拟主机服务,即 防爆。亚马逊,Azure等???

问这个的原因是,如果您启动和停止实例,IP将在Amazon中进行更改。 Azure具有不同的配置。

如果我走上正轨,请告诉我。

答案 1 :(得分:1)

如评论中所述,通过尝试ping域名,确保VM能够正确解析Web服务名称。

如果无法,请尝试刷新DNS。