ASP.NET / IIS6 - 使用动态压缩内容时禁用分块编码?

时间:2010-10-07 19:49:15

标签: asp.net iis compression

我在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在压缩动态内容时将传输编码设置为分块时,这会删除内容长度标头,因为它在执行此操作时违反了HTTP1.1标准。

如果不在服务器级别关闭动态压缩,最好的解决方法是什么?有没有办法通过ASP.NET以编程方式关闭此响应的压缩?有更好的办法吗?

1 个答案:

答案 0 :(得分:2)

您可以通过修改元数据库来打开/关闭站点或文件夹级别的压缩。有关更多信息,请参阅:

  

Enabling HTTP Compression (IIS 6.0)

向下滚动到:“为个别网站和网站元素启用HTTP压缩”

要执行此操作,您需要提升权限(至少是管理员)。

您可能必须将下载页面放在其自己的文件夹中,并在该级别关闭压缩,以免影响网站的其他部分。

我不得不承认我没试过这个,但这是我先尝试的。