using System;
using System.Web;
namespace xumh
{
/// <summary>
/// 多个HttpModule的应用示例:
/// web.config文件中HttpModules里面先Add哪一个他就先执行,按add的顺序分别执行
/// 多个HttpModule要过滤的事件会分别处理
/// </summary>
public class multiHttpModule : IHttpModule
{
public void Dispose()
{
throw new NotImplementedException();
}
public void Init(HttpApplication context)
{//重新定义ASP.NET的事件处理程序
context.BeginRequest += new EventHandler(myBeginRequest);
context.EndRequest += new EventHandler(myEndRequest);
context.PreRequestHandlerExecute += new EventHandler(myPreRequestHandlerExecute);
context.PostRequestHandlerExecute += new EventHandler(myPostRequestHandlerExecute);
context.ReleaseRequestState += new EventHandler(myReleaseRequestState);
context.AcquireRequestState += new EventHandler(myAcquireRequestState);
context.AuthenticateRequest += new EventHandler(myAuthenticateRequest);
context.AuthorizeRequest += new EventHandler(myAuthorizeRequest);
context.ResolveRequestCache += new EventHandler(myResolveRequestCache);
context.PreSendRequestHeaders += new EventHandler(myPreSendRequestHeaders);
context.PreSendRequestContent += new EventHandler(myPreSendRequestContent);
}
void myPreSendRequestContent(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myPreSendRequestContent<br/>");
}
void myPreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myPreSendRequestHeaders<br/>");
}
void myResolveRequestCache(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myResolveRequestCache<br/>");
}
void myAuthorizeRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("BeginRequest<br/>");
}
void myAuthenticateRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("BeginRequest<br/>");
}
void myAcquireRequestState(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myAcquireRequestState<br/>");
}
void myReleaseRequestState(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myReleaseRequestState<br/>");
}
void myPostRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myPostRequestHandlerExecute<br/>");
}
void myPreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myPreRequestHandlerExecute<br/>");
}
void myEndRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("myEndRequest<br/>");
}
void myBeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
context.Response.Write("multiHttpModules:myBeginRequest<br/>");
}
}
}
/*--===------------------------------------------===---
输出结果:
testHttpModule:myBeginRequest
multiHttpModules:myBeginRequest
BeginRequest
BeginRequest
myResolveRequestCache
myAcquireRequestState
myPreRequestHandlerExecute
myPostRequestHandlerExecute
myReleaseRequestState
myEndRequest
myPreSendRequestHeaders
--===------------------------------------------===---*/