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

如何在Asp.Net 4.0 / IIS7中支持压缩的HTTP请求?

发布时间:2020-12-16 04:23:19 所属栏目:asp.Net 来源:网络整理
导读:对于ASP.NET 4.0 / IIS7 Web应用程序,我想支持压缩的HTTP请求.基本上,我想支持在请求标头中添加Content-Encoding:gzip的客户端,并相应地压缩主体. 有谁知道我是如何实现这种行为的? Ps:关于,我有多个端点REST和SOAP,它感觉更好的解决方案来支持HTTP级别的
对于ASP.NET 4.0 / IIS7 Web应用程序,我想支持压缩的HTTP请求.基本上,我想支持在请求标头中添加Content-Encoding:gzip的客户端,并相应地压缩主体.

有谁知道我是如何实现这种行为的?

Ps:关于,我有多个端点REST和SOAP,它感觉更好的解决方案来支持HTTP级别的压缩,而不是每个端点的自定义编码器.

解决方法

对于那些可能感兴趣的人来说,IHttpModule只是简单地过滤传入的请求,实现起来相当简单.
public class GZipDecompressModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += BeginRequest;
    }

    void BeginRequest(object sender,EventArgs e)
    {
        var app = (HttpApplication)sender;

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

    public void Dispose()
    {
    }
}

更新:此方法似乎在WCF中触发了问题,因为WCF依赖于原始Content-Length而不是解压缩后获得的值.

(编辑:李大同)

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

    推荐文章
      热点阅读