Служба REST WCF - Как распаковать данные формы с помощью gzip?

У нас есть служба WCF-REST, клиент отправляет данные с помощью Content Encoding = gzip и сжимает данные в формате gzip. Однако мы не можем распаковать данные формы из запроса, полученного в службе WCF.

1 ответ

Решение

Наконец один из моих коллажей нашел ответ, спасибо Сандеш и команде!!!

Вам нужно добавить IHttpModule, который перехватывает каждый HTTP-запрос и распаковывает данные

/// <summary>
    /// This class Handles various pre-conditions which has to performed before processing the HTTP request.
    /// @author XXXXX
    /// </summary>
    public class PreRequestHandler : IHttpModule
    {
        public void Dispose()
        {
            throw new NotImplementedException();
        }

        public void Init(HttpApplication httpContext)
        {
            httpContext.BeginRequest += DecompressReceivedRequest;
        }

        /// <summary>
        /// Decompresses the HTTP request before processing it.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void DecompressReceivedRequest(object sender, EventArgs e)
        {
            HttpApplication httpApp = (HttpApplication)sender;

            if ("gzip" == httpApp.Request.Headers["Content-Encoding"])
            {
                httpApp.Request.Filter = new GZipStream(httpApp.Request.Filter, CompressionMode.Decompress);
            }

        }
    }

Также необходимо добавить следующую запись в файл web.config

  <!-- Configuration setting to add Custom Http Module to handle various pre-conditions which has to performed before processing the HTTP request.-->
  <system.webServer>
    <modules>
      <add name="PreRequestHandler" type="Your service class.PreRequestHandler"/>
    </modules>
  </system.webServer>
Другие вопросы по тегам