使用Web服务时出错:强制关闭现有连接

Sco*_*try 7 c# iis coldfusion web-services

我有一个用C#编写的Winforms应用程序,它使用来自Windows 2008 IIS Coldfusion服务器的Web服务.所有Web服务调用都成功但只有一个,在大约50%的时间内失败并出现以下错误:

用户代码未处理System.InvalidOperationException消息= XML文档中存在错误(1254,7).

内部例外:

InnerException:System.IO.IOException Message =无法从传输连接读取数据:远程主机强制关闭现有连接.

我检查了我的IIS日志,得到503错误(服务不可用)和IIS代码64(指定的网络不再可用).任何建议都会很棒.

我在SOAP UI中运行我的Web服务,我收到以下错误:

javax.net.ssl.SSLException:连接已关闭:javax.net.ssl.SSLException:java.net.SocketException:连接重置

这个代码在一家公司工作正常,但这个错误几乎每次都出现在我正在使用的这家公司.

Tim*_*ski 7

我不确定这是否适用于 OP 的特定情况,但这可能会帮助现在到达这里的其他人。此异常的一个潜在原因涉及不匹配的安全协议。如果您正在调用的服务器需要 TLS 1.2 并且您使用的是旧版本的 ASP.net(<= 4.0 版),除非您更改它,否则您将使用旧的安全协议进行调用。您可以强制 ASP.net 使用 TLS 1.2(如下所示)。这可以在应用程序的任何地方完成,但我把它放在调用需要 TLS 1.2 的 Web 服务的行之前:

using System.Net;

...

//Enable TLS 1.2
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 

// Call the Web Service that requires TLS 1.2
Run Code Online (Sandbox Code Playgroud)


Aka*_*ava 0

我确实遇到了类似的错误,原因是 XML 序列化中出现异常。大多数情况下,如果 xmlserializer 尝试读取某些属性,并且该 get 方法由于某些数据库连接已关闭或任何资源不可用而引发异常。

您是否尝试过在 global.asax 内的错误事件中记录异常?

有时,如果 global.asax 不引发错误事件,则只有通过响应过滤器记录错误的方法。您可以在 web.config 中添加自定义响应过滤器,在其中您将能够分析正确序列化的 XML 数量以及可能失败的位置。

http://msdn.microsoft.com/en-us/library/aa479332.aspx

http://www.raboof.com/projects/elmah/