HttpModule到底是干什么的呢?

 HttpModule是向实现类提供模块初始化和处置事件。
  
  首先你要实现IHttpModule接口这个接口只有两个方法,一个是Init方法一个Dispose方法.一看方法的名字就知道了这两个方法一个是在加载前调用的,一个是Dispose时调用的(页面最后处理的一个事件).
  
  
  
  下面代码说明了如何在所有的页面加载之前和结束写入一段文字:
  
  using System;
  using System.Data;
  using System.Configuration;
  using System.Web;
  using System.Web.Security;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  using System.Web.UI.WebControls.WebParts;
  using System.Web.UI.HtmlControls;
  
  /// <summary>
  /// HelloWorldModule 的摘要说明
  /// </summary>
  public class HelloWorldModule : IHttpModule
  {
  public HelloWorldModule()
  {
  //
  // TODO: 在此处添加构造函数逻辑
  //
  }
   string str = "";
   public String ModuleName
   {
   get { return "HelloWorldModule"; }
   }
  
   public void Init(HttpApplication application)
   {
   //注册页面请求开始和结束事件
   application.BeginRequest +=
   (new EventHandler(this.Application_BeginRequest));
   application.EndRequest +=
   (new EventHandler(this.Application_EndRequest));
   }
  
   private void Application_BeginRequest(Object source, EventArgs e)
   {
   //在页面开始请求前写入一段文字
   HttpApplication application = (HttpApplication)source;
   HttpContext context = application.Context;
   context.Response.Write(@"<h1><font color=red>
   HelloWorldModule: Beginning of Request
   </font></h1><hr>"+
   application.Request.QueryString.Count.ToString());
   }
  
   private void Application_EndRequest(Object source, EventArgs e)
   {
   //页面请求结束后写入一段文字
   HttpApplication application = (HttpApplication)source;
   HttpContext context = application.Context;
   context.Response.Write(@"<hr><h1><font color=red>HelloWorldModule: End of Request</font></h1>");
   }
   public void Dispose()
   {
   }
  }
  
  在web.config增加下面配置:
  
  <httpModules>
  
  <add name="HelloWorldModule" type="HelloWorldModule"/>
  
  </httpModules>
  
  
  
  上面是个小例子.那我们可以在这里做多少件事情呢?看下面的表就可以得出结论.
  
  事件
   说明
  
  BeginRequest
   指示请求处理开始。
  
  AuthenticateRequest
  
  PostAuthenticateRequest
   封装请求身份验证过程。
  
  AuthorizeRequest
  
  PostAuthorizeRequest
   封装请求授权过程。
  
  ResolveRequestCache
  
  PostResolveRequestCache
   封装检查是否能利用以前缓存的输出页面处理请求的过程。
  
  PostMapRequestHandler
   指示已发现用于处理请求的 HTTP 处理程序。
  
  AcquireRequestState
  
  PostAcquireRequestState
   封装对请求会话状态的检索。
  
  PostRequestHandlerExecute
   指示用于处理请求的 HTTP 处理程序已执行。
  
  ReleaseRequestState
  
  PostReleaseRequestState
   封装对请求会话状态的发布。
  
  UpdateRequestCache
  
  PostUpdateRequestCache
   封装检查是否应对请求的资源的输出进行缓存以备今后重复使用的过程。
  
  EndRequest
   指示请求处理结束。
  
  
  我们可以根据相应的事件来进行处理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值