Asp classic 超出响应缓冲区限制

Asp classic 超出响应缓冲区限制,asp-classic,buffering,Asp Classic,Buffering,我正在运行一个简单的查询,从数据库中获取数据并显示它们。我收到一个错误,显示超出了响应缓冲区限制 错误为:响应对象错误“ASP 0251:80004005” 超出响应缓冲区限制 /abc/test\u maintenanceDetail.asp,第0行 ASP页的执行导致响应缓冲区超出其配置的限制 我还尝试了Response.flush在我的循环中,并在我的页面顶部使用Response.buffer=false,但仍然没有得到任何数据 我的数据库包含5600条记录,请给我一些步骤或代码来解决此问

我正在运行一个简单的查询,从数据库中获取数据并显示它们。我收到一个错误,显示超出了响应缓冲区限制

错误为:响应对象错误“ASP 0251:80004005”
超出响应缓冲区限制
/abc/test\u maintenanceDetail.asp,第0行
ASP页的执行导致响应缓冲区超出其配置的限制

我还尝试了
Response.flush
在我的循环中,并在我的页面顶部使用
Response.buffer=false
,但仍然没有得到任何数据


我的数据库包含5600条记录,请给我一些步骤或代码来解决此问题。

以下是Microsoft支持页面对此的说明:

但在GUI中更容易:

  • 在Internet信息服务(IIS)管理器中,单击ASP
  • 将行为>限制属性>响应缓冲限制从4 MB更改为64 MB
  • 应用并重新启动

发生这种情况的原因是,缓冲在默认情况下处于打开状态,IIS 6无法处理较大的响应

在经典ASP中,在页面顶部的
之后添加:

在ASP.NET中,您需要将
Buffer=“False”
添加到页面指令中。 例如:

如果不允许在服务器级别更改缓冲区限制,则需要使用该方法

但是,如果您仍然遇到此错误,并且页面上有一个很大的表,则罪魁祸首可能是表本身。根据设计,某些版本的Internet Explorer将在将整个内容呈现到页面之前,在两个版本之间缓冲整个内容。因此,即使您告诉页面不要缓冲内容,table元素也可能被缓冲并导致此错误

一些替代的解决方案可能是对表结果进行分页,但是如果必须显示整个表并有数千行,则将这行代码扔到表生成循环的中间:出于速度考虑,您可能还需要考虑添加一个基本计数器,以便刷新只发生在每25行或100行左右。p> 不缓冲输出的缺点:

  • 整体页面加载速度减慢
  • 填充内容时,表和列将调整其宽度(表似乎在晃动)
  • 用户将能够在页面完全加载之前单击链接并与之交互。因此,如果您在页面底部有一些javascript,您可能希望将其移动到顶部,以确保在一些移动速度更快的用户单击内容之前加载它
  • 有关更多信息,请参阅本文


    希望这会有所帮助。

    我知道这已经太晚了,但是对于遇到这个问题的其他人来说:如果您使用某种循环(在我的情况下,是dowhile)来显示数据,请确保您正在移动到下一条记录(在我的情况下,是rs.MoveNext)。

    对同一错误消息的另一个答案(这刚刚解决了我的问题)系统驱动器的磁盘空间不足。意思是大约700kb的空闲空间。在这个非常旧的服务器上删除大量未使用的内容,然后重新启动IIS和网站(可能只有IIS是必需的),这会导致我的问题消失


    我相信其他答案对大多数人更有用,但要想快速解决问题,只需确保系统驱动器有一些可用空间。

    您可以按如下方式增加限制:

  • 停止IIS
  • 找到文件%WinDir%\System32\Inetsrv\Metabase.xml
  • 修改AspBufferingLimit值。默认值为4194304,约为4MB。 将其更改为20MB(20971520)
  • 重新启动IIS
  • 非常感谢你! 工作起来很有魅力! 我的asp/HTML表返回了大约2700条记录的空白页。以下调试行有助于暴露缓冲问题:我按如下所示替换Do While循环,并使用我的限制数字来查看发生了什么:

    更换

    做而不做

    “等等。。。。写入表行的代码块

    下一个

    环路

    当reccount<2500时执行此操作

    如果为rs.EOF,则重新计票=2501

    “等等。。。。写入表行的代码块

    下一个

    环路

    response.write“重新计数=”&重新计数


    升高或降低2500和2501,查看是否存在缓冲问题。对于我的记录集,我可以看到空白页返回,空白表,发生在大约2700记录,祝大家好运,再次感谢您解决这个问题!这么简单的解决方案我更正了错误“ASP 0251:80004005”响应缓冲区限制,如下所示:

    要增加IIS 6中的缓冲限制,请执行以下步骤:

    单击开始,单击运行,键入cmd,然后单击确定。 键入以下命令,然后按ENTER键: cd/d%systemdrive%\inetpub\adminscripts 键入以下命令,然后按ENTER键: cscript.exe adsutil.vbs设置w3svc/aspbufferinglimitsize 注LimitSize表示缓冲限制大小(以字节为单位)。例如,数字67108864将缓冲限制大小设置为64 MB。 要确认缓冲区限制设置正确,请执行以下步骤:

    单击开始,单击运行,键入cmd,然后单击确定。 键入以下命令,然后按ENTER键: cd/d%systemdrive%\inetpub\adminscripts 键入以下命令,然后按ENTER键: cscript.exe adsutil.vbs获取w3svc/aspbufferinglimit


    参考

    我面临同样的问题,我的IIS版本是8.5。在
    ASP->Limit Properties
    下增加了
    响应缓冲限制
    ,解决了该问题

  • 在IIS 8.5中,选择您的项目,您可以在右侧看到选项。在IIS下,您可以看到
    ASP
    选项
  • 在选项窗口中,增加
    响应缓冲区