解决SoapHttpClientProtocol连接问题

时间:2011-05-26 12:49:36

标签: c# webservice-client

在生产服务器上使用SOAP客户端时出现超时:

System.Net.WebException: The request timed out
  at System.Net.HttpWebRequest.GetRequestStream () [0x00000] in <filename unknown>:0 
  at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke (System.String method_name, System.Object[] parameters) [0x00000] in <filename unknown>:0 

当尝试从该计算机ping其他端点时,它可以正常工作,甚至telnet到端口80工作,所以这不是连接问题(我认为)。

相同的代码在另一台计算机上运行正常,它只是遇到此问题的生产代码。有什么想法如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以启用Network Tracing,将跟踪日志添加到问题中会有所帮助。

答案 1 :(得分:1)

好的,最后解决了这个问题,16个小时后不间断,这就是我提出的问题。这是奇怪的,令人费解和奇怪,它保证在这里张贴后代:

第1步:

创建一个Web项目,引用引用npgsql.dll的类库(后者又引用Mono.Security.dll)。在Web项目中添加Web服务引用,并在某个页面中使用它。

SOAP客户端现在可以正常工作

第2步:(这需要10个小时才能隔离)

在引用的类库中添加Class1.cs并使该类使用来自npgsql.dll的类,然后在您的Web项目中使用该类,但使用代码永远不会使用的地方。

SOAP客户端现在崩溃超时

在16小时的大部分时间里,从未调用过的代码如何改变SOAP客户端的行为超出了我的范围?

<强>答案

从npgsql.dll引用类时(即使代码从未被调用过),npgsl.dll和Mono.Security.dll也被复制到bin文件夹中。

通过一些未知的原因,Mono.Security.dll预先阻止SOAP客户端进行未经认证的连接。

只需从bin文件夹中删除Mono.Security.dll即可立即解决问题。

我不知道为什么需要Mono.Security.dll,或者它做了什么弄乱了SOAP,或者我怎么能从bin文件夹中删除它并让一切运行起来。

嗯,这就是我在一个懒散的时间里看到的最奇怪的错误的故事。