【问题标题】:PDF Handler Problem with Chrome & FirefoxChrome 和 Firefox 的 PDF 处理程序问题
【发布时间】:2011-10-11 05:14:14
【问题描述】:

好吧,我解决了访问 PDF 文件时内存不足的问题,但现在似乎当我尝试通过 Chrome 或 Firefox 访问大文件时出现乱码。它不会打开 Adob​​e,它只是将其显示为包含数百万字符的页面。我使用下面的代码将它提供给用户,你有什么想法为什么会这样做吗?

case "PDF":
     context.Response.ContentType = "application/pdf";
     context.Response.AddHeader("content-disposition", "inline; filename=" + asset.A_Name);
}

context.Response.BinaryWrite(content);

【问题讨论】:

    标签: c# asp.net pdf google-chrome handler


    【解决方案1】:

    您必须在响应中添加内容长度标头。它是 IIS 分块编码的问题。看here

    context.Response.AddHeader("Content-Length", fileInfo.Length.ToString());

    【讨论】:

    • 我实现了这个,它适用于我的一些 PDF,但似乎大的 PDF 仍然显示乱码。你知道什么会导致这个吗?我还尝试在切换之前添加Response.Clear(),但它什么也没做。
    • 它在 IE 中工作吗?也尝试设置 Response.Buffer = false。
    • 我尝试添加缓冲区,但没有任何效果。它可以在 IE 中运行,但在其他浏览器中没有。感谢您到目前为止的帮助,您还有其他想法吗?
    • 我不确定。它似乎对我有用。文件有多大。还有,可以试试 Response.TransmitFile 看看吗?
    • 我正在使用BinaryWrite。在检查文件大小之后,我注意到它不会对小于 10MB 的文件执行此操作。什么会导致这种情况?这让我对发生的事情更加困惑。
    【解决方案2】:

    是否已将任何内容写入响应流?请务必先致电Response.Clear()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多