我有一个Windows应用程序(实际上是一个Outlook插件),它调用asmx Web服务(是的,它的遗产,但公司不愿意放弃它并重新开发所有内容......)来获取一些数据。返回值是DataTable。我通过添加作为Web服务引用来调用Web服务。
这对所有客户端都有效,但最近有一个客户端报告了一个问题,即调用Web服务会引发以下错误(在两个单独的调用上):
异常类型: InvalidOperationException
异常消息: XML文档中存在错误(23,93530)。
内部Ex类型: IOException
内部消息:无法从传输连接读取数据:远程主机强制关闭现有连接。
在System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle,XmlDeserializationEvents事件)中 StackTrace:
在System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle)
在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage消息,WebResponse响应,流responseStream,布尔asyncCall)
在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object [] parameters)
异常类型: InvalidOperationException
异常消息: XML文档中存在错误(4426,32)。
内部Ex类型: IOException
内部消息:操作已超时。
在System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle,XmlDeserializationEvents事件)中 StackTrace:
在System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader,String encodingStyle)
在System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage消息,WebResponse响应,流responseStream,布尔asyncCall)
在System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,Object [] parameters)
我可以排除我的应用程序正在生成超时,因为我在调用之前将Web服务类的TimeOut属性设置为2小时,并且下一个请求在大约20-30分钟内到达服务器。
通过IIS日志,客户端失败的所有请求的http状态为200,但win32状态为995.
我一直试图复制这个错误,并在过去3天的大部分时间里找到它没有成功的原因(我需要找到确切的原因 - 公司政策:(:P)。我需要要知道为什么会发生这种情况,解决这个问题的解决方案或最佳方法是什么。
我也在MSDN论坛here
上发布了这个帖子任何人都可以帮我吗?任何帮助是极大的赞赏。谢谢!
干杯!
答案 0 :(得分:-1)
您需要检查是否达到连接限制要求服务器关闭它 作为检查web.config的另一方
<system.net>
<connectionManagement>
<add address="*" maxconnection="40"/>
</connectionManagement>
</system.net>