什么原因导致此 IIS 7 Web 服务偶尔出现连接错误?

什么原因导致此 IIS 7 Web 服务偶尔出现连接错误?

有时,当我们尝试从 .Net 客户端应用程序调用 .asmx Web 服务时,我们会收到以下错误:

“基础连接已关闭:服务器关闭了预期保持活动的连接。无法从传输连接读取数据:远程主机强制关闭了现有连接。”

我说的偶尔是指,对于某些用户来说,它可能出现零次、每隔几天一次或每天六次。对于用户的第一个 Web 服务调用,它永远不会发生。并且后续(通常是相同的)调用总是会在失败后立即起作用。失败发生在服务中的各种方法中,通常发生在请求后的 15-20 秒之间(根据日志)。

在 IIS 站点日志中查找特定调用将显示以下一个或另一个 Windows 错误代码:

121:信号量超时时间已到。

1236:本地系统中止网络连接。

一些额外的环境详细信息:

  • 在由两台在 Windows Server 2008 OS 上运行 IIS7 的服务器组成的内部网络 Web 场上运行。在由三台在 Windows Server 2003 上运行的服务器组成的较旧的 IIS6 Web 场中运行时不会出现这些问题(并且我们在开发和登台环境中使用单个 IIS6/2003 实例,没有任何问题)。编辑:此外,所有这些服务器实例都是 VMWare 虚拟机,不确定这是否还令人惊讶。

  • 该 Web 服务是 .Net 2.0/3.5 编译的 .asmx Web 服务,具有自己的应用程序池(.Net 2.0,集成管道)。仅启用了 Windows 身份验证。

  • 我们在服务器场中还有另一个 Web 服务,它使用与主服务相同的物理路径,唯一的区别是启用了基本身份验证。这用于我们 ERP 系统的一部分。尝试使用相同和不同的应用程序池 - 对错误没有影响。此站点的访问频率不如主站点高,并且从未出现过错误。

  • 如上所述,该错误仅在从 .Net 客户端调用时发生 - 而不是从其他应用程序调用。客户端应用程序始终为每个请求创建一个新的 Web 服务对象,并将服务凭据设置为 System.Net.CredentialCache.DefaultCredentials。

    应用程序要么本地部署到客户端,要么在 Citrix 服务器会话中运行。在 Citrix 中运行的用户似乎没有遇到此问题,只有本地部署的客户端才会遇到此问题。Citrix 服务器和 Web 场位于同一物理位置,并且位于同一 IP 范围 (10.67.xx.xx)。遇到此错误的本地部署客户端位于其他地方 (10.105.xx.xx、10.31.xx.xx)。

我检查了操作系统日志以查看是否能发现任何问题,但并没有发现什么问题。

编辑:实际上,我自己刚刚遇到了这个错误。我决定再次检查日志,发现在“同一”时间(IIS 日志条目在 1:39:59,事件日志条目在 1:39:50)有一个“审核失败”的安全日志条目。不确定这是否是巧合,我必须查看以前的错误日志。我可能在寻找救命稻草,但细节如下:

日志名称:安全 来源:Microsoft-Windows-Security-Auditing 日期:2009 年 7 月 8 日下午 1:39:50 事件 ID:5159 任务类别:过滤平台 连接级别:信息 关键字:审核失败 用户:N/A 计算机:is071019.<******>.net 描述:Windows 过滤平台已阻止对本地端口的绑定。

应用程序信息:进程 ID:1260 应用程序名称:\device\harddiskvolume1\windows\system32\svchost.exe

网络信息:源地址:0.0.0.0 源端口:54802 协议:17

过滤器信息:过滤器运行时 ID:0 层名称:资源分配层运行时 ID:36

我也尝试过在 IIS7 中使用失败请求跟踪,但服务调用实际上从未到达 FRT 可以捕获它的地方(即使失败记录在 Web 服务日志中)。

网络基础设施小组表示,他们检查了 DNS 和所有 NIC 设置,发现它们都正确无误,因此不存在“抖动”。一切正常。但我不确定他们是否检查了任何域控制器服务器,以查看是否存在问题。

有什么想法吗?或者还有其他调试策略可以彻底解决这个问题?我只是负责软件的开发人员,并不真正了解从网络方面要调查什么 - 虽然根据正在发生的事情,这听起来确实像是一个网络问题。

在此先感谢您的帮助。

答案1

您可以创建一个页面,当发生这种情况时,该页面会因错误而失败(try catch),然后使用 WCAT 模拟各种加载条件。希望您能看到一种模式,或者至少看看它是否与加载有关。否则,我会在 .Net 客户端中构建一些东西来捕获此问题并简单地重试请求,这样对用户来说就是透明的。

答案2

您是否需要启用 Windows 过滤平台?如果允许您禁用它,则应该可以避免此审核错误;如果必须启用它,也许他们可以破例让您禁用审核类别 - 请参阅:http://msdn.microsoft.com/en-us/library/bb309058(VS.85).aspx

如果您需要保持 WFP 处于启用状态且完好无损,这将无济于事。

答案3

我也偶尔在生产环境中遇到同样的情况。我发现但尚未验证的一些建议是关闭服务器上的 Http Keep-Alive,或者在 Web 请求上关闭它。请参阅http://support.microsoft.com/kb/819450

我计划在测试环境中测试这一点。

相关内容