【问题标题】:ASP.NET/IIS6 - Disable chunked encoding when using dynamically compressed content?ASP.NET/IIS6 - 使用动态压缩内容时禁用分块编码?
【发布时间】: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 以编程方式关闭此响应的压缩?有没有更好的做事方式?

【问题讨论】:

标签: asp.net iis compression


【解决方案1】:

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

Enabling HTTP Compression (IIS 6.0)

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

为此,您需要提升权限(至少是管理员)。

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

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

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 1970-01-01
    • 2011-12-06
    • 2014-08-24
    • 2011-07-13
    • 2012-12-02
    • 2010-12-12
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多