asp.net webservice处理gzip压缩请求
我有一个asp.net .asmx webservice,用于处理来自第三方工具的请求.第三方工具向Web服务发出http POST请求以获取用户信息.我正在使用IIS7
运行Fiddler并选中“删除所有编码”,我可以看到webservice调用,并且一切正常.如果取消选中“删除所有编码”,则Web服务调用将失败,并显示400 Bad Request.我看到的差异是Fiddler正在删除标题“Content-Encoding:gzip”,内容正在解压缩. 因此,当删除Content-Encoding标头并解压缩内容时,我的webservice功能完美.当标头存在并且内容被压缩时,web服务失败. 我怎么能: >配置我的webservice告诉客户端它不接受压缩请求(并希望第三方工具尊重它) 更新:要清楚,我不需要在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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 这是做什么的:MS_POSITIONING =“GridLayout”
- asp.net-mvc-3 – 如何使用ModelMetadata单元测试modelbind
- asp.net中MVC借助Iframe实现无刷新上传文件实例
- asp.net-mvc-3 – 验证隐藏的字段
- asp.net-mvc-3 – 在ASP.NET MVC 3中覆盖/禁用授权
- asp.net-core – openid connect – 在登录期间识别租户
- asp.net – Visual Studio需要Windows 7中提升的权限
- asp.net – 将mvc应用程序发布到Web服务器后无法生成SSPI上
- asp.net – 可以从没有这些.svn文件夹的subversion中检出文
- 如何在没有布局页面的情况下将部分脚本添加到asp.net mvc R
- asp.net – 用于网页的SQL Reporting Services查
- asp.net-mvc – 配置Magical Unicorn Mvc错误工具
- asp.net – 带有iTextSharp的页眉,页脚和大表
- asp.net-mvc-3 – 如果在Razor中的else语句不起作
- asp.net – 服务器端/客户端或两者用户输入验证
- ASP.NET MVC3中的HTML反而不是JSON的IIS响应
- asp.net-mvc – 定义脚手架. (关于动态数据和ASP
- asp.net – 建筑设计DAL层
- 在ASP.net应用程序中处理Com对象
- asp.net-mvc – viewdata中的ASP.NET MVC genric