我在一台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在压缩动态内容时将传输编码设置为分块(chunked),会删除内容长度标头,因为这违反了HTTP1.1标准。
如何在不关闭服务器级别的动态压缩的情况下解决这个问题?有没有一种通过ASP.NET编程方式关闭此响应的压缩的方法?是否有更好的方法来解决这个问题?