IHttpModule向实现类提供模块初始化和处置事件。 
IHttpModule包含兩個方法:

public void Init(HttpApplication context);
public void Dispose();

Init():这个方法接受一个HttpApplication对象,HttpApplication代表了当前的应用程序,我们需要在这个方法内注册 HttpApplication对象暴露给客户端的事件。可见,这个方法仅仅是用来对事件进行注册,而实际的事件处理程序,需要我们另外写方法。

整个过程很好理解:

1.       当站点第一个资源被访问的时候,Asp.Net会创建HttpApplication类的实例,它代表着站点应用程序,同时会创建所有在Web.Config中注册过的Module实例。
2.       在创建Module实例的时候会调用Modul的Init()方法。
3.       在Init()方法内,对想要作出响应的HttpApplication暴露出的事件进行注册。(仅仅进行方法的简单注册,实际的方法需要另写)。
4.       HttpApplication在其应用程序周期中触发各类事件。
5.       触发事件的时候调用Module在其Init()方法中注册过的方法。

Dispose():它可以在进行垃圾回收之前进行一些清理工作。

public class ModuleDemo:IHttpModule
{
    public void Init(HttpApplication context) {
        // 注册HttpApplication应用程序 BeginRequest 事件
        // 也可以是其他任何HttpApplication暴露出的事件
        context.BeginRequest += new EventHandler(context_BeginRequest);
    }

void context_BeginRequest(object sender, EventArgs e) {
        HttpApplication application = (HttpApplication)sender;
        HttpContext context = application.Context;
        // 做些实际的工作,HttpContext对象都获得了,剩下的基本可以自由发挥了
    }

public void Dispose() {
    }
}

在实现Dispose这个方法是,很多人习惯加上,thisDispose()这段代码,加上后,在实际的调试中会出现stockoverfllow异常,解决办法就是该方法是个不做任何处理的空方法,

最新文章

  1. 你知道C#中的Lambda表达式的演化过程吗
  2. C语言--通用类型栈
  3. js如何判断是否在iframe中
  4. ViewController
  5. Kafka的基本概念与安装指南(单机+集群同步)
  6. [APIO2011]
  7. 6.Git基础-远程仓库的使用
  8. CCF CSP 201712-1 最小差值
  9. eclipse提交到git
  10. Java String对象的问题 String s="a"+"b"+"c"+"d"
  11. MacOS Docker 安装
  12. python3中的zip函数(转)
  13. thinphp 缓存机制导致代码不跟新
  14. 最短路径Dijkstra matlab
  15. rsync的基本使用
  16. Python学习笔记(七)—字典的学习
  17. html5开放资料
  18. hive与hbase的联系与区别
  19. Jquery获取属性值
  20. 二、nginx 安装目录详解

热门文章

  1. 微信小程序-视图视图引用
  2. 安装composer
  3. contos7 安装netcore 和vscode
  4. java贪吃蛇
  5. js多个输入框运算计算结果输出到另一个输入框
  6. jsonp的使用
  7. Treap
  8. OSChina码云试用
  9. NFC
  10. 初识Polymer框架