IIS6 解决下载/上传大文件的问题

Windows 2003,当在IIS6上下载(/上传)大文件时,

会出现错误(log 文件中):80004005 Response_Buffer_Limit_Exceeded

原因:IIS6 有一个缺省的设置:AspBufferingLimit= 4194304 4M

解决办法:将AspBufferingLimit的值增大到合适的大小。

步骤:

1 修改IIS设置,允许直接编辑配置数据库

管理工具->IIS管理器里,选择计算机,右键,选择属性,然后选中“Enable Direct Metabase Edit.

2 修改IIS配置文件

1). 先在服务管理器里关闭iis admin service服务

         管理工具->服务->iis admin service->停止。

2). 用文本编辑器打开C:/Windows/System32/Inesrv/下的Metabase.xml文件

         注意:修改文件之前请先备份。

3). 修改对下载文件大小限制

         找到AspBufferingLimit,把它修改为你所需的大小。

         例如:AspBufferingLimit="8388608" 8M

修改对上传文件大小限制

         找到ASPMaxRequestEntityAllowed 把他修改为需要的值,默认为204800,即200K 把它修改为你所需的大小。如:83886088M

         例如:AspRequestQueueMax="8388608"

4). 然后开启www服务

     管理工具->服务->World Wide Web Publishing Service->开启

 

备注:

       也可以直接在控制台命令行运行 ADSUTIL.VBS更改此值。不用停止IIS

       例如改为8M:运行“ADSUTIL.VBS SET W3SVC/AspBufferingLimit 8388608

 

另外,可以在控制台命令行直接停止和启动IIS

              停止:“Net stop iisadmin /y

              启动:“Net start w3svc

 

       也可以使用IIS6 Resource Kit中的Metabase Explorer (MBExplorer.exe)代替Metaedit 2.2编辑。

       IIS6 Resource Kit的下载地址

http://support.microsoft.com/kb/840671

http://www.microsoft.com/downloads/details.aspx?FamilyID=56fc92ee-a71a-4c73-b628-ade629c89499&DisplayLang=en

       IIS6命令行工具的说明:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/5e7f8cde-4a01-42bd-acaf-f8f7d091ef7c.asp

 

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个办法管用的话,还是比较好的,比较环保。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值