LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
版主

Response对象错误 'ASP0251:80004005' 的解决办法

tercel
2011年3月17日 10:12 本文热度 3934

使用Adodb.Stream下载文件(如下代码)

       Response.ContentType = "application/octet-stream"
       response.AddHeader "Content-Disposition","attachment;filename=" &  objRs("Attach_Name")& filetype
       Set Stream = Server.CreateObject("ADODB.Stream")

       Stream.type=1
       Stream.Open
       Stream.LoadFromFile server.mappath(objRs("Attach_path"))
       Response.BinaryWrite Stream.Read         
       Stream.Close
       Set Stream = Nothing

当下载文件小于4M时没问题,大于4M时出错,提示

Response对象错误 'ASP 0251 : 80004005'     
    
超过响应缓冲区限制

问题出在IIS的配制中AspBufferingLimit只有4M,所以有如下几种解决办法:

1、修改IIS的配制

停止IIS服务,然后用记事本修改C:\WINDOWS\system32\inetsrv\MetaBase.xml   
  
中的:   
   AspBufferingLimit="4194304"    //
即默认4M   
  
改为:   
   AspBufferingLimit="8388608"    //
改为8M或更多,自己决定

2、如果不想修改IIS的默认配制就要修改代码了。

     Response.Buffer=False   Response.Buffer设为否
     
Response.ContentType = "application/octet-stream"
       response.AddHeader "Content-Disposition","attachment;filename=" &  objRs("Attach_Name")& filetype
       Set Stream = Server.CreateObject("ADODB.Stream")

       Stream.type=1
       Stream.Open
       Stream.LoadFromFile server.mappath(objRs("Attach_path"))
     offset = 0
     ChunkSize = 2048*1024        ‘ChunkSize
小于IIS配制文件中的AspBufferingLimit项所设置的大小
     TotalSize = Stream.Size
     while offset < TotalSize
         if (TotalSize - offset < ChunkSize) then
             ChunkSize = TotalSize – offset
         end if
         strChunk = Stream.Read(ChunkSize)         
            Response.BinaryWrite strChunk       
          offset = offset + ChunkSize
     wend        
       Stream.Close

或者

Response.Buffer= true     使用缓冲区
    Response.Clear                
   Response.ContentType = "application/octet-stream"
       response.AddHeader "Content-Disposition","attachment;filename=" &  objRs("Attach_Name")& filetype
       Set Stream = Server.CreateObject("ADODB.Stream")

       Stream.type=1
       Stream.Open
       Stream.LoadFromFile server.mappath(objRs("Attach_path"))
     offset = 0
     ChunkSize = 2048*1024
     TotalSize = Stream.Size
     while offset < TotalSize
         if (TotalSize - offset < ChunkSize) then
             ChunkSize = TotalSize – offset
         end if
         strChunk = Stream.Read(ChunkSize)         
            Response.BinaryWrite strChunk       
            response.flush                
这句很重要,它把缓冲区的数据据推出去
          offset = offset + ChunkSize
     wend        
       Stream.Close

 

该文章在 2011/3/17 10:12:49 编辑过

全部评论1

tercel
2011年3月17日 10:20

在自己的机子上网页浏览正常。突然换了一台机子,浏览却出现了错误?不用说,十有八九是机子的问题,先把错误详细内容贴出来让大家看看吧 Response 对象 错误 'ASP 0251 : 80004005' 超过响应缓冲区限制 /index.asp,行 0 此 ASP 页的执行造成响应缓冲区超过其配置限制。 其实这个主要是因为数据量过的造成的,只要加大Buffer的缓冲区就可以了,办法是:

1、自动处理:

下载这个程序:,然后将允许上传大小调大即可。设置时注意这个程序中的大小是字节B,不是KB,1MB=1024KB、1KB=1024B

2、手工设置也行,麻烦些:

先在服务里关闭iisadminservice服务 (服务管理里边停止) 找到windows\system32\inetsrv\下的metabase.xml, (我的是2003系统) 打开,找到 AspBufferingLimit 把他修改为需要的值,默认为4194304,即4096KB 建议把它修改为41943040(40M)或适合的数值,取决于服务器内存是否足够大。 然后重启iisadminservice服务。 注意事项: 1、要注意服务器内存量是否足够。 2、还有因为数据量比较大,相应的还要修改ASP处理时间,即: 修改"AspScriptTimeout" 默认值90 (秒) 修改"AspSessionTimeout" 默认值20 (分钟)


该评论在 2014/2/24 17:16:29 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved