AcquireRequestState | 當 ASP.NET 獲取與當前請求關聯的當前狀態(如會話狀態)時發生。 | |
AuthenticateRequest | 當安全模塊已建立用戶標識時發生。 | |
AuthorizeRequest | 當安全模塊已驗證用戶授權時發生。 | |
BeginRequest | 在 ASP.NET 響應請求時作爲 HTTP 執行管線鏈中的第一個事件發生。 | |
Disposed | 添加事件處理程序以偵聽應用程序上的 Disposed 事件。 | |
EndRequest | 在 ASP.NET 響應請求時作爲 HTTP 執行管線鏈中的最後一個事件發生。 | |
Error | 當引發未處理的異常時發生。 | |
PostAcquireRequestState | 在已獲得與當前請求關聯的請求狀態(例如會話狀態)時發生。 | |
PostAuthenticateRequest | 當安全模塊已建立用戶標識時發生。 | |
PostAuthorizeRequest | 在當前請求的用戶已獲授權時發生。 | |
PostMapRequestHandler | 在 ASP.NET 已將當前請求映射到相應的事件處理程序時發生。 | |
PostReleaseRequestState | 在 ASP.NET 已完成所有請求事件處理程序的執行並且請求狀態數據已存儲時發生。 | |
PostRequestHandlerExecute | 在 ASP.NET 事件處理程序(例如,某頁或某個 XML Web service)執行完畢時發生。 | |
PostResolveRequestCache | 在 ASP.NET 跳過當前事件處理程序的執行並允許緩存模塊滿足來自緩存的請求時發生。 | |
PostUpdateRequestCache | 在 ASP.NET 完成了緩存模塊的更新並存儲了以下響應時發生,這些響應用於滿足來自緩存的後續請求。 | |
PreRequestHandlerExecute | 恰好在 ASP.NET 開始執行事件處理程序(例如,某頁或某個 XML Web service)前發生。 | |
PreSendRequestContent | 恰好在 ASP.NET 向客戶端發送內容之前發生。 | |
PreSendRequestHeaders | 恰好在 ASP.NET 向客戶端發送 HTTP 標頭之前發生。 | |
ReleaseRequestState | 在 ASP.NET 執行完所有請求事件處理程序後發生。該事件將使狀態模塊保存當前狀態數據。 | |
ResolveRequestCache | 當 ASP.NET 完成授權事件以使緩存模塊從緩存中爲請求提供服務時發生,從而跳過事件處理程序(例如某個頁或 XML Web services)的執行。 | |
UpdateRequestCache | 當 ASP.NET 執行完事件處理程序以使緩存模塊存儲將用於從緩存爲後續請求提供服務的響應時發生。 |
Http Request在整個HttpModule中的生命週期圖:
Http Request開始
|
HttpModule
|
HttpModule.BeginRequest()
|
HttpModule.AuthenticateRequest()
|
HttpModule.AuthorizeRequest()
|
HttpModule.ResolveRequestCache()
|
建立HttpHandler控制點
|
接着處理(HttpHandler已經建立,此後Session可用)
|
HttpModule.AcquireRequestState()
|
HttpModule.PreRequestHandlerExecute()
|
進入HttpHandler處理HttpRequest
|
HttpHandler.ProcessRequest()
|
返回到HttpModule接着處理(HttpHandler生命週期結束,Session失效)
|
HttpModule.PostRequestHandlerExecute()
|
HttpModule.ReleaseRequestState()
|
HttpModule.UpdateRequestCache()
|
HttpModule.EndRequest()
|
HttpModule.PreSendRequestHeaders()
|
HttpModule.PreSendRequestContent()
|
將處理後的數據返回客戶端
|
整個Http Request處理結束
示例:
using System;
using System.IO;
using System.Web;
using System.Xml;
using System.Data;
using System.Threading;
using System.Diagnostics;
namespace AbcMis.Framework.OUP.Passport
{
class AuthenticateModule:System.Web.IHttpModule
{
public void Init(HttpApplication application)
{
application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
application.EndRequest += (new EventHandler(this.Application_EndRequest));
application.PreRequestHandlerExecute += (new EventHandler(this.Application_PreRequestHandlerExecute));
application.PostRequestHandlerExecute += (new EventHandler(this.Application_PostRequestHandlerExecute));
application.ReleaseRequestState += (new EventHandler(this.Application_ReleaseRequestState));
application.AcquireRequestState += (new EventHandler(this.Application_AcquireRequestState));
application.AuthenticateRequest += (new EventHandler(this.Application_AuthenticateRequest));
application.AuthorizeRequest += (new EventHandler(this.Application_AuthorizeRequest));
application.ResolveRequestCache += (new EventHandler(this.Application_ResolveRequestCache));
application.PreSendRequestHeaders += (new EventHandler(this.Application_PreSendRequestHeaders));
application.PreSendRequestContent += (new EventHandler(this.Application_PreSendRequestContent));
}
private void Application_PreRequestHandlerExecute(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string UserGuid = (string)context.Session["UserGuid"];
context.Response.Write("Application_PreRequestHandlerExecute"+UserGuid+"<br>");
}
private void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_BeginRequest<br>");
}
private void Application_EndRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_EndRequest<br>");
}
private void Application_PostRequestHandlerExecute(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_PostRequestHandlerExecute<br>");
}
private void Application_ReleaseRequestState(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_ReleaseRequestState<br>");
}
private void Application_UpdateRequestCache(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_UpdateRequestCache<br>");
}
private void Application_AuthenticateRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_AuthenticateRequest<br>");
}
private void Application_AuthorizeRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_AuthorizeRequest<br>");
}
private void Application_ResolveRequestCache(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_ResolveRequestCache<br>");
}
private void Application_AcquireRequestState(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_AcquireRequestState<br>");
}
private void Application_PreSendRequestHeaders(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_PreSendRequestHeaders<br>");
}
private void Application_PreSendRequestContent(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
context.Response.Write("Application_PreSendRequestContent<br>");
}
public void Dispose()
{
}
}
}
注:本文是網上轉貼