[点晴永久免费OA]IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
|
admin
2011年1月12日 15:14
本文热度 8636
|
情形1:上传下载时出此错误:
在测试ASP做一个文件下载页面,用ADODB.Stream来操作文件下载达到隐藏真实路径的目的,因为是本地测试,所以一开始用的是一个63.8M的文件做下载测试,却提示如下的错误:
Response 对象 错误 'ASP 0251 : 80004005'
超过响应缓冲区限制
/showuser.asp,行 0
此 ASP 页的执行造成响应缓冲区超过其配置限制。
想起IIS6下面文件上传默认的是200K,默认的缓冲会不会也有这个限制?于是将测试文件换成一个100K的,程序顺利通过,看来真是有这个限制,于是打开c:\windows\system32\inesrv\下的metabase.xml来看,搜索Buffer,一共找到四个,借助金山词霸确定是572行的AspBufferingLimit="4194304",换算了一下是4096(4M),于是将测试下载的文件又换成一个3.8M的,程序也顺利通过,再将测试文件换成一个5.1M的,又出现上面的错误,看来引起错误的原因应该是这个了,于是我在“4194304”加多了一个“0”,5.1的文件也可以顺利下载了,问题解决。
注意:改metabase.xml前必须先在服务里关闭iisadminservice服务,改完之后再重启IIS服务,或者打开IIS,在计算机名上点右键,选属性,勾选第一项“允许直接编辑配置数据库”,如果修改之后程序运行超时,可适当调整默认的超时时间,还有加大默认缓冲会不会导致其它问题我不清楚,由此引起的一切损失与本人无关,因此请自行决定是否采用.
情形2:正常读取记录出此错误:
本空间注:一般来说,这种错误经常并非真是IIS缓冲不够,而是代码错误,如使用:do while not RS.Eof格式时,忘了在其中加上RS.MoveNext导致的。
因为页面中数据较多,有上千条,导致出现“超过响应缓冲区限制。此 ASP 页的执行造成响应缓冲区超过其配置限制。”。
如果response.buffer=false这样设的话,可以查出,但是好慢。怎么解决?
我们可以加大Buffer的缓冲区,办法是:
先在服务里关闭iisadminservice服务
找到windows\system32\inesrv\下的metabase.xml,
打开,找到 AspBufferingLimit 把他修改为需要的值,默认为4194304,即4096KB
建议把它修改为41943040(40M)或适合的数值,取决于服务器内存是否足够大。
然后重启iisadminservice服务。
注意事项:
1、要注意服务器内存量是否足够。
2、还有因为数据量比较大,相应的还要修改ASP处理时间,即:
修改"AspScriptTimeout" 默认值90 (秒)
修改"AspSessionTimeout" 默认值20 (分钟)
该文章在 2011/1/12 15:14:20 编辑过