【发布时间】:2014-09-16 03:10:03
【问题描述】:
我正在尝试通过 httpHandler 下载 PDF 文件,但由于某种原因,我的 httpHandler 返回的内容长度大小不正确?
如果我把这段代码放到一个普通的 aspx 页面中,它可以工作,所以我只能猜测 httpHandlers 有什么不同?
代码如下(在 c# 和 vb.net 中),我返回一个额外的 my-length 标头以查看我的 lData 数组的长度是多少
当我在 chrome 中执行此操作时,content-length 属性为 842710,但 my-length 为 845942
为什么它们不同?我什至尝试手动设置内容长度,但这无济于事......
非常感谢任何帮助
C#
byte[] lData = Document.GetData();
context.Response.Clear();
context.Response.ClearContent();
context.Response.ClearHeaders();
' headers for response
context.Response.AddHeader("My-Length", lData.Length);
context.Response.AddHeader("Content-Type", "application/pdf");
context.Response.AddHeader("Content-Disposition", "attachment; filename="""MyFile.PDF"""");
context.Response.OutputStream.Write(lData, 0, lData.Length);
context.Response.End();
VB.NET
Dim lData() As Byte = lDocument.GetData()
context.Response.Clear()
context.Response.ClearContent()
context.Response.ClearHeaders()
' headers for response
context.Response.AddHeader("My-Length", lData.Length)
context.Response.AddHeader("Content-Type", "application/pdf")
context.Response.AddHeader("Content-Disposition", "attachment; filename="""MyFile.PDF"""")
context.Response.OutputStream.Write(lData, 0, lData.Length)
context.Response.End()
【问题讨论】:
-
使用 Fiddler 检查响应。使用 Hex 窗口查找意外发送的其他数据。也许垃圾被附加了。
-
会看看这个...... 大文件有效而处理程序下载的较小文件损坏了