首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF REST服务-如何使用gzip解压表单数据?

WCF REST服务-如何使用gzip解压表单数据?
EN

Stack Overflow用户
提问于 2012-12-10 20:40:42
回答 1查看 917关注 0票数 1

我们有一个WCF-REST服务,客户端使用Content Encoding = gzip发送数据,并以gzip格式压缩数据。但是,我们无法从WCF服务中收到的请求中解压缩表单数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-02 15:45:12

最后,我的一个拼贴画找到了答案,感谢Sandesh和团队!

您需要添加拦截每个HTTP请求并解压缩数据的IHttpModule

代码语言:javascript
复制
/// <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文件中添加以下条目

代码语言:javascript
复制
  <!-- 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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13801135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档