WebAPI Gzip lors du retour de HttpResponseMessage

J'ai un WebAPI contrôleur qui renvoie un HttpResponseMessage et je tiens à ajouter de la compression gzip. C'est le code du serveur:

using System.Net.Http;
using System.Web.Http;
using System.Web;
using System.IO.Compression;

[Route("SomeRoute")]
public HttpResponseMessage Post([FromBody] string value)
{
    HttpContext context = HttpContext.Current;

    context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);

    HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
    HttpContext.Current.Response.Cache.VaryByHeaders["Accept-encoding"] = true;

    return new SomeClass().SomeRequest(value);
}

Et c'est le code client pour l'appel ajax, à l'aide de jquery:

$.ajax({
    url: "/SomeRoute",
    type: "POST",
    cache: "false",
    data: SomeData,
    beforeSend: function (jqXHR) { jqXHR.setRequestHeader('Accept-Encoding', 'gzip'); },
    success: function(msg) { ... }

Lorsque je l'exécute, le code du serveur renvoie sans énerve mais le client bugs:

(failed)
net::ERR_CONTENT_DECODING_FAILED

WebAPI Gzip lors du retour de HttpResponseMessage

Quand je regarde avec un violon, c'est ce que je vois:

WebAPI Gzip lors du retour de HttpResponseMessage

Que dois-je modifier pour que le service web retour au format gzip contenu que le client traite normalement? Je sais que je pourrais aussi le faire avec un HttpModule ou par l'intermédiaire de certains paramètres sur IIS, mais aucune option ne s'adapte le scénario de l'hébergement:

WebAPI Gzip lors du retour de HttpResponseMessage

Veuillez noter que je ne suis pas à la recherche d'un IIS, car je n'ai pas accès à ce (hébergement).

InformationsquelleAutor frenchie | 2014-07-18