我正在运行一个简单的查询来从我的数据库中获取数据并显示它们。我收到一个错误,上面写着Response Buffer Limit Exceeded
。
错误是:响应对象错误'ASP 0251:80004005' 超出响应缓冲区限制 /abc/test_maintenanceDetail.asp,第0行 执行ASP页导致响应缓冲区超出其配置的限制。
我也在我的循环中尝试了Response.flush
,并在页面顶部使用response.buffer = false
,但我仍然没有得到任何数据。
我的数据库包含5600条记录,请给我一些步骤或代码来解决问题。
我知道这已经晚了,但对于遇到此问题的其他人:如果您使用某种循环(在我的情况下,Do-While)来显示数据,请确保您要移动到下一条记录(在我的例子中,是一个rs.MoveNext)。
如果您正在寻找原因并且不想对抗系统设置,那么这些是我遇到的两种主要情况:
在我的情况下,我只是在rs.Open之前写了这一行.....
Response.flush
rs.Open查询,conn
微软的支持说这个
http://support.microsoft.com/kb/925764
但在GUI上它更容易:
发生这种情况的原因是默认情况下打开缓冲,IIS 6无法处理大响应。
在经典ASP中,在页面顶部,在<%@Language="VBScript"%>
之后添加:<%Response.Buffer = False%>
在ASP.NET中,您可以将Buffer="False"
添加到Page指令中。例如:<%@Page Language="C#" Buffer="False"%>
如果不允许在服务器级别更改缓冲区限制,则需要使用<%Response.Buffer = False%>方法。
但是,如果您仍然遇到此错误并且页面上有一个大表,那么罪魁祸首可能就是表本身。根据设计,某些版本的Internet Explorer会在呈现到页面之前缓冲整个内容。因此,即使您告诉页面不缓冲内容,表元素也可能被缓冲并导致此错误。
一些替代解决方案可能是对表结果进行分页,但是如果必须显示整个表并且它有数千行,则在表生成循环的中间抛出这行代码:<%Response.Flush%>。出于速度考虑,您可能还需要考虑添加一个基本计数器,以便仅每25或100行左右进行一次刷新。
不缓冲输出的缺点:
有关http://support.microsoft.com/kb/925764的更多信息,请参阅此知识库文章
希望有所帮助。
非常感谢! <%Response.Buffer = False%>就像一个魅力!我的asp / HTML表格返回了大约2700条记录的空白页面。以下调试行有助于揭示缓冲问题:我按如下方式替换Do While循环,并使用我的限制数字来查看发生的情况:
更换
做而不是rs.EOF
'etc ....你写代码行的代码块
rs.moveNext
环
同
当reccount <2500时
如果rs.EOF然后重新计数= 2501
'etc ....你写代码行的代码块
rs.moveNext
环
response.write“recount =”&recount
升高或降低2500和2501以查看它是否是缓冲问题。对于我的记录集,我可以看到空白页返回,空白表,发生在大约2700条记录,祝大家好运,再次感谢您解决此问题!这么简单的大解决方案!
您可以按如下方式增加限制:
对同一错误消息的另一个答案(这只是解决了我的问题)是系统驱动器的磁盘空间不足。意味着700kb免费。删除这个真正旧的服务器上的大量未使用的东西,然后重新启动IIS和网站(可能只有IIS是必要的)导致问题消失了。
我确信其他答案对大多数人来说更有用,但为了快速修复,只需确保系统驱动器有一些可用空间。
我纠正了错误'ASP 0251:80004005'响应缓冲区限制如下:
若要增加IIS 6中的缓冲限制,请按照下列步骤操作:
单击“开始”,单击“运行”,键入cmd,然后单击“确定”。键入以下命令,然后按ENTER键:cd / d%systemdrive%\ inetpub \ adminscripts键入以下命令,然后按ENTER键:cscript.exe adsutil.vbs SET w3svc / aspbufferinglimit LimitSize注意LimitSize表示缓冲限制大小(以字节为单位) 。例如,数字67108864将缓冲限制大小设置为64 MB。要确认正确设置缓冲区限制,请按照下列步骤操作:
单击“开始”,单击“运行”,键入cmd,然后单击“确定”。键入以下命令,然后按ENTER键:cd / d%systemdrive%\ inetpub \ adminscripts键入以下命令,然后按ENTER键:cscript.exe adsutil.vbs GET w3svc / aspbufferinglimit