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标记中“使用”等效的命名空间
- msbuild – 如何为ASP.NET 5项目设置TeamCity构建
- 有没有办法将内部控件放在ASP.NET自定义控件中?
- asp.net – 如何在页面加载时以“添加新”模式进行编程设置
- asp.net-mvc – Elmah基本设置问题/问题
- asp.net – 在ASP MVC3中,如何使用uri执行控制器和动作?
- asp.net-mvc – ASP.NET MVC 3 RC和Azure?
- asp.net-mvc-4 – 创建和编辑MVC4的相同视图
- 如何在asp.net c#中计算网站访问者数量
- asp.net – 如何通过ADO.NET运行我的.sql脚本文件?
- asp.net-mvc – 在ASP.Net MVC中,如何创建将java
- 调试w /附加到进程启动ASP.NET开发服务器
- asp.net – 直接将.aspx转换为.pdf [已关闭]
- entity-framework – Ninject WebAPI由于DbConte
- 在ASP.net页面中嵌入SVG
- asp.net-mvc – 如何在.NET MVC3 HTML表单中的必
- 如何在ASP.NET MVC 4 Beta中禁用Javascript/CSS缩
- asp.net-mvc – 使用LINQ to SQL在ASP.NET MVC中
- asp.net – 选择性地将CSS应用于gridview中的一行
- asp.net-mvc – asp.net mvc强类型助手 – 你的渲
