在生产服务器上使用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工作,所以这不是连接问题(我认为)。
相同的代码在另一台计算机上运行正常,它只是遇到此问题的生产代码。有什么想法如何解决这个问题?
答案 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文件夹中删除它并让一切运行起来。
嗯,这就是我在一个懒散的时间里看到的最奇怪的错误的故事。