HttpModule

Refer:Introduction to HTTP Modules

 

  一个HTTP module是一个ASP.NET程序每次处理请求的时候都会调用的一个程序集。HTTP模块是ASP.NET请求管道的一部分,在整个请求过程中,调用一些列的生命周期事件。利用HTTP Module,可以检查传入的请求;或者基于传入的请求,再添加一些自定义的行为;或者检查响应,并且修改响应。

 

  ASP.NET HTTP 模块类似于ISAPI的过滤器,在每次请求的时候它们都会运行。Http module是用托管代码写的,它们和ASP.NET应用程序的生命周期完全集成。

 

Http Module的典型应用:

安全认证

  可以利用HTTP模块,在被请求的页面,XML Web service或者handler被调用之前,来检查该传入的请求,并且执行自定义的认证方式或者安全校验。

数据统计和记录日志

  因为每次请求都会调用HTTP Module,所以我们可以定义一个HTTP Module来执行请求次数的统计或者记录日志

自定义header 和footer

  因为可以利用HTTP Module来修改响应内容,所以可以对页面或者XML Web Service的响应注入一些自定义的信息

 

  HTTP Module 注册在Web.config文件中,第一个请求到达服务器时,ASP.NET会构造一个HttpApplication类实例来表示当前应用程序,然后会构造所有在Web.config中注册的HTTP Module的实例,然后每个Module 的Init方法会被调用。在Init 方法里面可以挂载一些生命周期事件,来实现我们自定义的行为。

 

  

  

  Global.asax里面也定义了生命周期事件,所以我们也可以把自定义功能写在Global.asax中。如果把Global.asax的程序集放到GAC,并且配置在Machine.config中,就可以让它被许多不同的ASP.NET应用程序来重用。

 

 创建一个HTTP Module的步骤

   定义一个类,实现 IHttpModule 接口

  

  在Web.config的<system.web>节点下,配置创建好的HTTP Module

  

posted @ 2014-03-10 18:41  Super猪  阅读(193)  评论(0编辑  收藏  举报