2016-09-14 143 views
0

我有一个用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

我要去哪里错了吗?谢谢!

+0

这里是一个相关的文章,也许这有助于:[ERR_CONTENT_DECODING_FAILED](http://stackoverflow.com/questions/14039804/error-330-neterr-content-decoding-failed) –

+0

究竟是什么问题,你能显示一个堆栈跟踪或一些更详细的信息......铬的错误是非常模糊的,但它确实告诉你解码失败了,据说,你提供的细节越多,我就可以提供更好的帮助。 – TGarrett

+0

我不知道这是你的错误的原因,但你的代码实际上并没有对压缩字节('output')做任何事情。它有点不在范围内 –

回答

0

因此,在你的代码你写的内容压缩到您MemoryStream但你的json_string仍然后你还说,原来的字符串作为回应,但将其标记为压缩gzip格式的原始json_string

那么到底Chrome会纯字符串JSON内容用gzip解码,并没有这样做,

你想送它关闭

或者你之前写什么内部outputjson_string对象可以配置IIS始终压缩所有内容以节省您的一些麻烦。

+0

谢谢@Steve,我将研究IIS配置。 –