c# - 使用 Web 服务时出错 : An existing connection was forcibly closed

标签 c# web-services iis coldfusion

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

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

有一个内部异常(exception):

内部异常:System.IO.IOException Message=无法从传输连接读取数据:远程主机强行关闭了现有连接。

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

我在 SOAP UI 中运行我的 Web 服务,但出现以下错误:

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

此代码在一家公司工作正常,但对于我目前正在工作的这家公司,几乎每次都会弹出此错误。

最佳答案

我不确定这是否适用于 OP 的具体情况,但这可能会帮助现在来到这里的其他人。此异常的一个潜在原因涉及不匹配的安全协议(protocol)。如果您调用的服务器需要 TLS 1.2 并且您使用的是旧版本的 ASP.net(<= 版本 4.0),除非您更改它,否则您将使用旧的安全协议(protocol)进行调用。您可以强制 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

关于c# - 使用 Web 服务时出错 : An existing connection was forcibly closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117628/

相关文章:

c# - 为什么我的 MVC Controller 在提供图像时速度很慢

asp.net - ScriptResource.axd 调用的参数是如何生成的?

c# - ReSharper 是否有 "move initializer to constructor?"的逆

c# - 返回 Web 窗体中等效的文件

c# - 在不同选项卡上按名称 IE8 获取元素(Javascript)

php - 通过我的 REST API 连接 Google REST API 无效

java - 找不到所需的类(javax.activation.DataHandler 和 javax.mail.internet.MimeMultipart)。附件支持已禁用

c# - 如何在运行时添加 ActiveX 控件

php - 如何从 PHP 访问 Sharepoint 列表?

caching - IIS 缓存和 HTTP 缓存