HttpResponseMessage压缩问题
问题描述:
我有一个用ASP.NET写的web应用程序。除了我想压缩正在返回的数据之外,所有工作都可以正常工作。数据基本上是自定义模型的列表。目前,我做这样的事情:HttpResponseMessage压缩问题
string json_string = new JavaScriptSerializer().Serialize(my_models);
using (var output = new MemoryStream())
{
using (var compressor = new Ionic.Zlib.GZipStream(output, Ionic.Zlib.CompressionMode.Compress, Ionic.Zlib.CompressionLevel.BestCompression))
{
compressor.Write(Encoding.ASCII.GetBytes(json_string), 0, json_string.Length);
}
}
然后我用以下着手:
HttpResponseMessage json = Request.CreateResponse(HttpStatusCode.OK, json_string);
json.Content.Headers.Add("content-encoding", "gzip");
这会导致应用程序错误。在浏览器(通过控制台),我看到以下消息:
ERR_CONTENT_DECODING_FAILED
我要去哪里错了吗?谢谢!
答
因此,在你的代码你写的内容压缩到您MemoryStream
但你的json_string
仍然后你还说,原来的字符串作为回应,但将其标记为压缩gzip格式的原始json_string
。
那么到底Chrome会纯字符串JSON内容用gzip解码,并没有这样做,
你想送它关闭
或者你之前写什么内部output
到json_string
对象可以配置IIS始终压缩所有内容以节省您的一些麻烦。
+0
谢谢@Steve,我将研究IIS配置。 –
这里是一个相关的文章,也许这有助于:[ERR_CONTENT_DECODING_FAILED](http://stackoverflow.com/questions/14039804/error-330-neterr-content-decoding-failed) –
究竟是什么问题,你能显示一个堆栈跟踪或一些更详细的信息......铬的错误是非常模糊的,但它确实告诉你解码失败了,据说,你提供的细节越多,我就可以提供更好的帮助。 – TGarrett
我不知道这是你的错误的原因,但你的代码实际上并没有对压缩字节('output')做任何事情。它有点不在范围内 –