我们在一系列 Windows 7 机器上托管一个 Web 应用程序(通过 localhost 访问),这些机器安装了 IIS 7.5,有些用户偶尔会在请求过程中卡住。检查 IIS 请求日志后,发现某个特定的 Javascript 文件需要超过 230,000 毫秒,大约四分钟。我们的服务器端处理似乎运行良好且快速,但浏览器在尝试引入 Javascript 文件时会立即挂起。它不会在每次请求此文件时都挂起,只是偶尔会挂起。这些有问题的请求在日志中仍然会产生 HTTP 状态代码 200,但 Win32 错误代码为 1236(本地系统中止网络连接)。
四分钟过后,浏览器似乎不再尝试对外部资源(CSS 文件、图片等)发出任何请求,而只是渲染目前已有的内容。因此,用户看到的是一个纯白色的页面,所有数据都采用 Times New Roman 字体,没有格式,也没有 JavaScript 来指示行为。他们陷入了困境。
这个问题似乎只发生在对这个特定的 Javascript 文件的请求中,该文件大约为 280KB。另一个有趣的事情是,当我从浏览器地址栏手动对此文件进行 GET 请求时,它会提示我下载它,但当我去保存它时,它会在文件名后附加六个随机数字/字母,我发现这非常奇怪。所以我禁用了静态压缩和经典的 ASP 缓冲废话,但我们仍然遇到这个问题。我没有找到任何 ISAPI 过滤器或任何其他可以执行此文件名修改的选项。
有什么办法可以解决这个恼人的问题吗?同样的应用程序在我们大多数其他机器上运行良好,这个特定的 IIS 配置一定存在一些独特之处,导致了这些问题。
答案1
当我在 IIS 日志中遇到看似随机/周期性的 1236 错误且请求挂起时,解决方法是禁用 Windows Defender 实时扫描。