2016-09-14 69 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配置。 –