- 博客(0)
- 资源 (4)
- 收藏
- 关注
IIS6缓冲区超过其配置限制
IIS6缓冲区超过其配置限制
在IIS6上运行ASP的时候,有时候会出现:“IIS6缓冲区超过其配置限制”这个错误,原因是asp脚本最后产生的页面太大,超过缓冲区大小。我们的报表有服务器端分页,每页行数由用户设置,设置为0的时候表示一页显示,这样,当数据太多并且一页显示的时候会报错,比如有个固定资产的表,设置为每页30行的时候有580页,可以正常显示,但是设置为每页0行的时候就无法显示了,原来的代码处理的时候,每当记录数超过一定范围的时候(比如900条数据),就Respond.flush一下,清空缓冲区保证可以再使用。不过新版本代码中,没有合适的地方再加Respond.flush这一句,代码改起来比较麻烦。
从Google上搜索了一下解决办法,在这里集中一下,通通没有验证,不过应该有管用的;)
1.asp页面中合适的地方加入Respond.flush
以下都是各处copy的:
-修改IIS配置的:
2.停止IIS服务,然后用记事本修改C:\WINDOWS\system32\inetsrv\MetaBase.xml 中的:
AspBufferingLimit="4194304" //即默认4M
为:
AspBufferingLimit="8388608" //改为8M或更多
重启IIS
3.可以在“C:\Inetpub\AdminScripts”路径下在命令行中输入:
adsutil set w3svc/2/root/autoupdate/aspbuf-feringlimit -1
adsutil set w3svc/aspbufferinglimit -1
命令来将缓存还原(默认大小为4MB),如果当前需要Response的大小超过这个限制,那么可以尝试将-1改为相应的大小,比如40MB就是41943040:
adsutil set w3svc/aspbufferinglimit 41943040
注:2,3应该是殊途同归。
4.在IIS中"主目录"-"配置"-"选项",将启用缓存前面的勾去掉,即禁用缓存。
注:比较怀疑这个说法,即便管用,对性能应该也有一些影响。不过还是列出来,以后可以试一下。
-修改单个页面的:
5.可以通过服务器端iis里设置缓冲区大小,也可以通过程序更改这一值
<%@ page buffer="10240kb" autoFlush="false" %>
注: buffer:他的值可以是"none"或者一个数值。 指定处理JSP工作时的out处理网页出入内容 的模式。如果值为none,那么就不会有缓存,而所有的输出都是由servletresponse的printerwriter。 若是一个数值,表示缓存的大小,单位是kb,那么输出的缓存大小至少会大于这个值。
根据autoFlush(可取true或者false)属性而定,输入内容超出缓存大小时是否要清除(true)还是产 生异常(false)。一般的,缓存设置为8kb以
6.可以在ASP应用程序的头部添加如下语句:
<%Response.Buffer = False%>
注:同4.
个人认为如果第5个办法管用的话,还是比较好的,比较环保。
2009-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人