调用asmx Web服务时出现InvalidOperationException

时间:2014-03-20 00:31:20

标签: c# web-services asmx

我有一个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

上发布了这个帖子

任何人都可以帮我吗?任何帮助是极大的赞赏。谢谢!

干杯!

1 个答案:

答案 0 :(得分:-1)

您需要检查是否达到连接限制要求服务器关闭它 作为检查web.config的另一方

  <system.net>
    <connectionManagement>
       <add address="*" maxconnection="40"/>
    </connectionManagement>
 </system.net>