![如果“文件下载”处于打开状态,则 IIS 请求将无法完成](https://linux22.com/image/592360/%E5%A6%82%E6%9E%9C%E2%80%9C%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD%E2%80%9D%E5%A4%84%E4%BA%8E%E6%89%93%E5%BC%80%E7%8A%B6%E6%80%81%EF%BC%8C%E5%88%99%20IIS%20%E8%AF%B7%E6%B1%82%E5%B0%86%E6%97%A0%E6%B3%95%E5%AE%8C%E6%88%90.png)
我们有一个 ASP.NET 应用程序,用于向用户返回图像文件。当用户请求图像时,该应用程序会在标头中设置适当的内容信息,并返回字节。我们发现,如果浏览器提示用户打开或保存图像,则 IIS 请求将保持“发送响应”状态,直到用户选择其中一个提示选项。
问题在于有些用户没有关闭提示,导致请求无法完成。一旦发生这种情况,其他请求也会无法完成。最终,所有可用线程都会被用完。
有没有办法强制 IIS 在超时后强制终止请求?我们尝试设置“executionTimeout”,但这没有任何效果,因为请求线程在等待客户端回答提示时没有做任何工作。
连接超时设置为默认值 120 秒。
答案1
您的连接超时(HTTP KeepAlive 超时)是多少?
网站 > 连接限制 > 连接超时。默认值为 120 秒。(不要与应用程序池超时混淆)。有时使用会话亲和性(粘性会话)的应用程序的超时值会更高。将其设置得太高会增加连接数。
您还应确保拥有最新的 http.sys热修复已安装,版本 6.1.7601.21886。