2016-09-14 3 views
0

私はASP.NETで書かれたWebアプリケーションを持っています。すべてが正常に動作していますが、返されるデータを圧縮したい場合を除きます。データは基本的にカスタムモデルのリストです。HttpResponseMessage圧縮の問題

HttpResponseMessage json = Request.CreateResponse(HttpStatusCode.OK, json_string); 

json.Content.Headers.Add("content-encoding", "gzip"); 

これは、アプリケーションエラーが発生します。私は、次を続行

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); 
    } 
} 

:現在、私のような何かを行います。私はここで間違っているつもりです

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はgzipで純粋な文字列JSONコンテンツをデコードしようとすると、それはやることができなかったので、

あなたは

またはあなたがそれを送信する前にjson_stringオブジェクトにoutputの内側にいただきました!を書きたいと思う

常に自分自身を救うためにすべてを圧縮するようにIISを設定することができます。

+0

ありがとう@Steve、代わりにIIS設定を調べます。 –

関連する問題