zoukankan      html  css  js  c++  java
  • HttpModule详解

    1. 什么是HttpModule
    2. HttpModule有什么作用
    3. 如何编写自己的HttpModule
    4. 如何注册HttpModule
    5. 案例解读:HttpModule在NopCommerce与Orchard中的应用
    6. 系统的HttpModule

    什么是HttpModule

     HTTP 模块是一个在每次针对应用程序发出请求时调用的程序集。

    HttpModule有什么作用

     ASP.NET 使用模块来实现各个应用程序功能,其中包括 Forms 身份验证、缓存、会话状态和客户端脚本服务

    如何编写自己的HttpModule

     自定义的HttpModule要实现IHttpModule接口的两个方法:Dispose,Init

        public class CustomModule:IHttpModule
        {
            public void Dispose()
            {
            }
            public void Init(HttpApplication context)
            {
                context.BeginRequest += context_BeginRequest;
                context.EndRequest += context_EndRequest;
            }
            void context_EndRequest(object sender, EventArgs e)
            {
                HttpContext.Current.Response.Write(DateTime.Now+" begin request...");
            }
            void context_BeginRequest(object sender, EventArgs e)
            {
                HttpContext.Current.Response.Write(DateTime.Now + " end request...");
            }
        }

    如何注册HttpModule

    可以通过在 Web.config 文件中创建一个项来注册该模块。通过注册 HTTP 模块,可使其能够订阅请求管道通知。在 IIS 7.0 中,应用程序可以在经典模式或集成模式下运行。在经典模式下,请求的处理方式与在 IIS 6.0 中基本相同。在集成模式下,IIS 7.0 使用管道(管道使其可以与 ASP.NET 共享请求、模块和其他功能)来管理请求。

    在 IIS 7.0 集成模式下注册模块的过程与 IIS 7.0 经典模式下的注册过程稍有不同。

    为 IIS 6.0 和在经典模式下运行的 IIS 7.0 注册模块

    <configuration>
      <system.web>
        <httpModules>
          <add name="CustomModule" type="MyDemo.CustomModule,MyDemo"/>
         </httpModules>
      </system.web>
    </configuration>

    为在集成模式下运行的 IIS7.0 注册模块

    <configuration>
      <system.webServer>
        <modules>
          <add name="CustomModule"  type="MyDemo.CustomModule,MyDemo"/>
         </modules>
      </system.webServer>
    </configuration>

    案例解读:HttpModule在NopCommerce与Orchard中的应用

    1、在NopCommerce中创建了AutofacRequestLifetimeHttpModule,用来管理组件的生命周期,确保请求结束后注销组件。

    参考:Where is AutofacRequestLifetimeHttpModule registered? 

    2、在Orchard中创建了WarmupHttpModule模块, 该模块检查host是否就绪,如果没有,就将request加入到等待队列中,host就绪后将继续执行request.

    参考:源码阅读Orchard.WarmupStarter程序集

     参考:

    1、 MSDN HTTP 处理程序和 HTTP 模块概述 

    2、通过 ASP.NET 异步编程实现可扩展的应用程序

    3、一点一点学ASP.NET之基础概念——HttpModule

    4、IIS Modules Overview

  • 相关阅读:
    HDU
    C# Stopwatch
    RMQ(Range Minimum Query)问题(转)
    HDU
    POJ
    HDU
    POJ
    POJ
    docker安装testlink
    廖雪峰Java2面向对象编程-3继承和多态-2多态
  • 原文地址:https://www.cnblogs.com/andrewcn/p/2993555.html
Copyright © 2011-2022 走看看