加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net webservice处理gzip压缩请求

发布时间:2020-12-16 00:07:41 所属栏目:asp.Net 来源:网络整理
导读:我有一个asp.net .asmx webservice,用于处理来自第三方工具的请求.第三方工具向Web服务发出http POST请求以获取用户信息.我正在使用IIS7 运行Fiddler并选中“删除所有编码”,我可以看到webservice调用,并且一切正常.如果取消选中“删除所有编码”,则Web服务
我有一个asp.net .asmx webservice,用于处理来自第三方工具的请求.第三方工具向Web服务发出http POST请求以获取用户信息.我正在使用IIS7

运行Fiddler并选中“删除所有编码”,我可以看到webservice调用,并且一切正常.如果取消选中“删除所有编码”,则Web服务调用将失败,并显示400 Bad Request.我看到的差异是Fiddler正在删除标题“Content-Encoding:gzip”,内容正在解压缩.

因此,当删除Content-Encoding标头并解压缩内容时,我的webservice功能完美.当标头存在并且内容被压缩时,web服务失败.

我怎么能:

>配置我的webservice告诉客户端它不接受压缩请求(并希望第三方工具尊重它)
>在asp.net处理的早期解压缩内容
>修改我的Web服务以使用压缩数据

更新:要清楚,我不需要在Response中配置gzip编码,我需要处理一个请求到我的web服务,这是gzip编码的.

更新2:第三方工具是Salesforce.com Outlook插件.因此,我无权修改它,许多其他公司也没有遇到麻烦.它必须是我正在做的事情(或不做)

更新3:我发现一个here帖子说IIS不支持带压缩数据的传入POST请求,它只支持压缩响应.这仍然可以吗?

解决方法

最简单的技术是创建一个替换请求过滤器的HttpModule.它更可重用,并避免使用Global.asax.由于GZipStream已为此做好准备,因此无需创建新的解压缩流类.这是完整的代码,它还删除了不再需要的Content-Encoding:gzip:
public class GZipRequestDecompressingModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += (sender,e) =>
        {
            var request = (sender as HttpApplication).Request;

            string contentEncoding = request.Headers["Content-Encoding"];

            if (string.Equals(contentEncoding,"gzip",StringComparison.OrdinalIgnoreCase))
            {
                request.Filter = new GZipStream(request.Filter,CompressionMode.Decompress);
                request.Headers.Remove("Content-Encoding");
            }
        };
    }
    public void Dispose()
    {
    }
}

要激活此模块,请将以下部分添加到web.config中:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="AnyUniqueName"
            type="YourNamespace.GZipRequestDecompressingModule,YourAssembly"
            preCondition="integratedMode" />
    </modules>
</system.webServer>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读