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
--===------------------------------------------===--- */