经典ASP中的缓冲区问题

时间:2019-04-30 14:31:45

标签: iis asp-classic

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

enter image description here

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

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

enter image description here

1 个答案:

答案 0 :(得分:0)

您最好使用Response.Buffer = False

禁用缓冲区

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

另一种解决方案是间歇使用Response.Flush() 从缓冲区刷新数据,并将HTML分块发送给客户端计算机。但是完全禁用该缓冲区将为您完成此操作,而无需使用Response.Flush()