zoukankan      html  css  js  c++  java
  • GzipModule 实现

    /// <summary>
    /// 能支持双向GZIP压缩的Module,它会根据客户端是否启用GZIP来自动处理。
    /// 对于服务来说,不用关心GZIP处理,服务只要处理输入输出就可以了。
    /// </summary>
    internal class DuplexGzipModule : IHttpModule
    {
        public void Init(HttpApplication app)
        {
            app.BeginRequest += new EventHandler(app_BeginRequest);
        }
    
        void app_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;
    
            // 注意:这里不能使用"Accept-Encoding"这个头,二者的意义完全不同。
            if( app.Request.Headers["Content-Encoding"] == "gzip" ) {
                app.Request.Filter = new GZipStream(app.Request.Filter, CompressionMode.Decompress);
    
                app.Response.Filter = new GZipStream(app.Response.Filter, CompressionMode.Compress);
                app.Response.AppendHeader("Content-Encoding", "gzip");
            }
        }
    
        public void Dispose()
        {
        }
    }

    每个HttpModule只需要实现IHttpModule接口就可以了。IHttpModule也是个简单的接口:

    public interface IHttpModule
    {
        void Dispose();
    
        void Init(HttpApplication app);
    }

    让HttpModule工作也需要在web.config中注册:

    <httpModules>
        <add name="DuplexGzipModule" type="MySimpleServiceFramework.DuplexGzipModule"/>
    </httpModules>

     

  • 相关阅读:
    PAT(A) 1065. A+B and C (64bit) (20)
    PAT(A) 1046. Shortest Distance (20)
    PAT(A) 1042. Shuffling Machine (20)
    PAT(A) 1009. Product of Polynomials (25)
    PAT(A) 1002. A+B for Polynomials (25)
    win10开始菜单打不开怎么办?
    排序
    C语言文件读写操作总结
    NO.3 4 章 模拟、算法初步
    POJ2104 K-th Number(归并树)
  • 原文地址:https://www.cnblogs.com/sntetwt/p/3027932.html
Copyright © 2011-2022 走看看