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

转载于:https://www.cnblogs.com/andrewcn/archive/2013/04/23/2993555.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值