【问题标题】:Classic ASP IIS 6 Response buffer limit exceeded超出经典 ASP IIS 6 响应缓冲区限制
【发布时间】:2014-02-12 21:48:15
【问题描述】:

我有一个经典的 ASP 应用程序,它允许用户下载第三方供应商提供的 excel 文档。下面是示例代码。如果文档大小大于 4mb,我会收到错误“超出响应缓冲区限制”。

我做了一些研究并尝试了不同的东西。只有增加 IIS 中的缓冲区限制才能解决我的问题。但是我的系统团队不愿意在生产中进行这种更改。

是否有替代解决方案? ASP.Net 中是否有可用的解决方案?

    set objDoc = Server.createobject("Some.Object")
    objDoc.DocId doc_id
    bin_obj = objDoc.Binary
    set objDoc = Nothing

    Response.buffer = TRUE
    Response.ContentType = "application/msexcel"
    Response.AddHeader "Cache-Control", "public"
    Response.AddHeader "Pragma", "public"   
    Response.AddHeader "Content-Disposition", "attachment;filename=test.xls"
    Response.BinaryWrite bin_obj
    Response.Flush
    Response.End

【问题讨论】:

    标签: asp.net iis asp-classic


    【解决方案1】:

    您需要逐步推送内容,例如。每块 1Mb。如果您的 COM 对象 ("Some.Object") 不允许按块读取,您可以使用 ADODB.Stream 对象和方法 stream.Read(count)。

    更新:

    Option Explicit
    
    Dim streamS, streamB
    
    Set streamS = Server.CreateObject("ADODB.Stream")
    streamS.Type = 1 'Binary stream
    streamS.Open
    streamS.LoadFromFile Server.MapPath("/Nissan_Qashqai_IDTR.rar")
    
    Set streamB = Server.CreateObject("ADODB.Stream")
    streamB.Type = 1
    streamB.Open
    
    Dim blockSize
    blockSize = 1024 ' block size is 1 KB
    
    Response.AddHeader "Content-Disposition", "attachment;filename=MyTestBinryFile.bin"
    Response.AddHeader "Content-Length", streamS.Size
    Response.ContentType = "application/octet-stream"
    
    Dim i
    For i = 0 To streamS.Size - 1 Step blockSize
        streamB.Position = 0
        streamS.CopyTo streamB, blockSize
        streamB.Position = 0
        Response.BinaryWrite(streamB.Read)
        Response.Flush
    Next
    
    streamS.Close
    Set streamS = Nothing
    
    streamB.Close
    Set streamB = Nothing
    
    Response.Flush
    

    【讨论】:

    • 你能给我举个例子吗?
    • 太棒了。谢谢你。我会试一试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2012-12-31
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多