【发布时间】:2010-10-07 19:49:14
【问题描述】:
我在 IIS6 服务器上运行 ASP.NET。现在服务器设置为压缩动态生成的内容,主要是为了减少正在检索的 ASPX 文件的页面大小。
一旦 ASPX 文件有以下代码,用于从数据库中获取文件并将其发送给用户:
Response.Clear();
Response.Buffer = true;
Response.ContentType = Document.MimeType;
Response.AddHeader("content-disposition", "attachment;filename=\"" + Document.Filename + Document.Extension + "\"");
Response.AddHeader("content-length", Document.FileSizeBytes.ToString());
byte[] docBinary = Document.GetBinary();
Response.BinaryWrite(docBinary);
下载本身运行良好。但是,下载文件的人没有看到进度条,这非常烦人。
从我一直在做的研究来看,似乎当 IIS 在压缩动态内容时将传输编码设置为分块时,这会删除 content-length 标头,因为这样做违反了 HTTP1.1 标准。
在不关闭服务器级别的动态压缩的情况下解决此问题的最佳方法是什么?有没有办法通过 ASP.NET 以编程方式关闭此响应的压缩?有没有更好的做事方式?
【问题讨论】:
-
旁注:当您提供的文件是 Office 2007/2010 文件时,您似乎需要提供 Content-Length 标头。 stackoverflow.com/questions/5914675/….
标签: asp.net iis compression