内容长度和httpCompression困境

时间:2011-10-03 08:43:59

标签: c# asp.net http-headers http-compression http-content-length

我的ASP.NET应用程序将JSON对象返回给用户,它包含二进制编码数据。因此我决定启用HTTP压缩,问题始于Content-Length。

如果我启用压缩,则会忽略Content-Length标头,而响应的发送和连接不会立即关闭。在发送所有数据后,连接仍然打开约15秒。

我想启用HTTP压缩,但不知道如何使用Content-Length标头来解决问题。

context.Response.AddHeader("Content-Length", jsonObject.ToString().Length.ToString());
context.Response.Write(jsonObject);
context.Response.Flush();
context.Response.Close();

1 个答案:

答案 0 :(得分:2)

Content-Length表示在您的情况下传输的数据的长度,它是压缩的字节。请参阅此SO问题,其答案链接到相关RFC:content-length when using http compression

如果HTTP压缩是通过Web服务器(而不是您的代码)发生的,那么我建议您尝试自己添加内容长度标头。希望Web服务器能够正确添加它。

如果您查看开发人员控制台,您会看到Content-Length远小于实际未压缩页面的字节数。