我们在客户网站上遇到了一个非常奇怪的问题。我们在 IIS Web 服务器 (Win 2003) 上托管了一个 .NET 应用程序,客户端可以使用 IEExec.exe 来运行该应用程序。
我们发现其中一个二进制文件(我们应用程序的主要可执行文件,我们称之为 MyApp.exe)可以由 IIS 提供服务,但如果您在几秒钟内第二次请求它,它只会等待永远不会到达的 HTTP 响应。托管在 IIS 上的所有其他二进制文件都可以正常工作。
IIS 日志没有报告任何错误。事实上,它们报告第二个请求成功(200 代码,但有 1236 附加代码 - 这意味着客户端放弃了)。
服务器没有病毒检查程序。我们反复检查 MyApp.exe 是否损坏。如果我们将 MyApp.exe 重命名为其他名称,它仍然会在快速连续多次下载时出现问题,但如果我们将 notepad.exe 重命名为 MyApp.exe 并将其放在服务器上,那么 IIS 就可以毫无问题地为其提供服务。
我们不知道是什么导致了这种奇怪的行为。有什么建议吗?什么原因导致 IIS 在尝试提供文件时无限期挂起?
答案1
经过长时间的故障排除和向 Microsoft 支持部门提出问题后,我们终于找到了问题的根源。事实证明,这种奇怪的行为与一种名为“TCP Chimney”的东西有关,但最近已在更新中修复。
看 http://support.microsoft.com/kb/945977 和 http://support.microsoft.com/?kbid=948496