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
指示请求处理结束。
我们可以根据相应的事件来进行处理.
HttpModule到底是干什么的呢?
最新推荐文章于 2021-02-09 04:18:06 发布