首页 > 解决方案 > 经典 ASP 中的缓冲区问题

问题描述

我们有一个经典的 ASP 应用程序在 Windows Server 2012 和 IIS(版本 8)Web 服务器上运行,并且必须修改页面以允许从数据库中检索更大的数据集。当我们在不修改任何 IIS 设置的情况下运行它时,我们会在 IE 中收到以下错误;

在此处输入图像描述

我们尝试将站点级别和 IIS 应用程序级别的缓冲区级别从标准 4194304 (4Mb) 限制修改为 20971520 (20Mb),但是当我们在 IE 和 chrome 中将输出更改为下图时,它会不断要求每次输入凭据20秒左右。

为什么会这样?请问我们如何解决?

在此处输入图像描述

标签: iisasp-classic

解决方案


您可能最好使用禁用缓冲区Response.Buffer = False

默认情况下,IIS 缓冲所有输出,这意味着在构建网页时,它会存储在内存(缓冲区)中,直到脚本完成执行,然后整个页面作为一个文件从缓冲区发送到客户端计算机。如果您正在构建一个包含大量数据的非常大的页面,则可能会导致缓冲区溢出。增加缓冲区大小限制是一种解决方案,虽然我不明白为什么它会开始要求凭据,但您一定是在 IIS 中配置错误。

另一种解决方案是使用Response.Flush()间歇性地从缓冲区刷新数据并将 HTML 以块的形式发送到客户端机器。但是完全禁用缓冲区将为您执行此操作,而无需Response.Flush().


推荐阅读