HttpApplication 事件

Public event AcquireRequestState 當 ASP.NET 獲取與當前請求關聯的當前狀態(如會話狀態)時發生。
Public event AuthenticateRequest 當安全模塊已建立用戶標識時發生。
Public event AuthorizeRequest 當安全模塊已驗證用戶授權時發生。
Public event BeginRequest 在 ASP.NET 響應請求時作爲 HTTP 執行管線鏈中的第一個事件發生。
Public event Disposed 添加事件處理程序以偵聽應用程序上的 Disposed 事件。
Public event EndRequest 在 ASP.NET 響應請求時作爲 HTTP 執行管線鏈中的最後一個事件發生。
Public event Error 當引發未處理的異常時發生。
Public event PostAcquireRequestState 在已獲得與當前請求關聯的請求狀態(例如會話狀態)時發生。
Public event PostAuthenticateRequest 當安全模塊已建立用戶標識時發生。
Public event PostAuthorizeRequest 在當前請求的用戶已獲授權時發生。
Public event PostMapRequestHandler 在 ASP.NET 已將當前請求映射到相應的事件處理程序時發生。
Public event PostReleaseRequestState 在 ASP.NET 已完成所有請求事件處理程序的執行並且請求狀態數據已存儲時發生。
Public event PostRequestHandlerExecute 在 ASP.NET 事件處理程序(例如,某頁或某個 XML Web service)執行完畢時發生。
Public event PostResolveRequestCache 在 ASP.NET 跳過當前事件處理程序的執行並允許緩存模塊滿足來自緩存的請求時發生。
Public event PostUpdateRequestCache 在 ASP.NET 完成了緩存模塊的更新並存儲了以下響應時發生,這些響應用於滿足來自緩存的後續請求。
Public event PreRequestHandlerExecute 恰好在 ASP.NET 開始執行事件處理程序(例如,某頁或某個 XML Web service)前發生。
Public event PreSendRequestContent 恰好在 ASP.NET 向客戶端發送內容之前發生。
Public event PreSendRequestHeaders 恰好在 ASP.NET 向客戶端發送 HTTP 標頭之前發生。
Public event ReleaseRequestState 在 ASP.NET 執行完所有請求事件處理程序後發生。該事件將使狀態模塊保存當前狀態數據。
Public event ResolveRequestCache 當 ASP.NET 完成授權事件以使緩存模塊從緩存中爲請求提供服務時發生,從而跳過事件處理程序(例如某個頁或 XML Web services)的執行。
Public event 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()
        {
        }

    }

}

注:本文是網上轉貼

轉載請註明出處[http://samlin.cnblogs.com/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章