2009-01-14 135 views

回答

73

也許這有助於

http://support.microsoft.com/kb/307985/en-us/

的HttpApplication類提供了許多與模塊可以同步事件。以下事件可用於模塊在每個請求上進行同步。這些事件中列出了順序:

  1. 的BeginRequest
  2. AuthenticateRequest
  3. 的AuthorizeRequest
  4. ResolveRequestCache
  5. 的AcquireRequestState
  6. 的PreRequestHandlerExecute
  7. PostRequestHandlerExecute
  8. ReleaseRequestState
  9. 的UpdateRequestCache
  10. EndRequest

以下事件可用於模塊與爲每個請求傳輸同步。這些事件的順序是非確定性的。

  • PreSendRequestHeaders
  • PreSendRequestContent
  • 錯誤

看到這篇文章完全信息。

45

MSDN Library文檔:

以下是事件(粗體)等步驟在請求管道的ASP.NET 4.0:

  1. 驗證請求t,它檢查瀏覽器發送的信息並確定它是否包含潛在的惡意標記。
  2. 如果在Web.config文件的UrlMappingsSection部分中配置了任何URL,請執行URL映射。
  3. 提高BeginRequest事件。
  4. 提高AuthenticateRequest事件。
  5. 提高PostAuthenticateRequest事件。
  6. 提高AuthorizeRequest事件。
  7. 提高PostAuthorizeRequest事件。
  8. 提高ResolveRequestCache事件。
  9. 提高PostResolveRequestCache事件。
  10. [IIS 5.0/6.0]根據請求資源的文件擴展名(映射到應用程序的配置文件中),選擇一個實現IHttpHandler的類來處理請求。如果請求是針對從Page類派生的對象(頁面),並且需要編譯該頁面,則ASP.NET會在創建該頁面的實例之前編譯該頁面。 [IIS 7.0]提高MapRequestHandler事件。根據請求資源的文件擴展名選擇適當的處理程序。該處理程序可以是本機代碼模塊,如IIS 7.0 StaticFileModule或託管代碼模塊,如PageHandlerFactory類(處理.aspx文件)。
  11. 提高PostMapRequestHandler事件。
  12. 提高AcquireRequestState事件。
  13. 提高PostAcquireRequestState事件。
  14. 提高PreRequestHandlerExecute事件。
  15. 爲請求調用相應IHttpHandler類的ProcessRequest方法(或異步版本IHttpAsyncHandler.BeginProcessRequest)。例如,如果請求是針對頁面的,則當前頁面實例將處理該請求。
  16. 提高PostRequestHandlerExecute事件。
  17. 提高ReleaseRequestState事件。
  18. 提高PostReleaseRequestState事件。
  19. 如果定義了Filter屬性,請執行響應篩選。
  20. 提高UpdateRequestCache事件。
  21. 提高PostUpdateRequestCache事件。
  22. [IIS 7.0]提高LogRequest事件。
  23. [IIS 7.0]提高PostLogRequest事件。
  24. 提高EndRequest事件。
  25. 提高PreSendRequestHeaders事件。
  26. 提高PreSendRequestContent事件。

注意:僅當應用程序在IIS 7.0和.NET Framework 3.0或更高版本中以集成模式運行時,才支持MapRequestHandler,LogRequest和PostLogRequest事件。

2

的BeginRequest

請求已啓動。如果您需要在請求開始時執行某些操作(例如,在每頁頂部顯示廣告橫幅或進行一些變量初始化)。

AuthenticateRequest

如果你想在自己的自定義驗證方案,堵塞(例如,查找用戶對數據庫來驗證密碼,或在HTTP請求的報頭信息查詢)。

的AuthorizeRequest

此事件用於內部實現授權機制(例如,存儲在數據庫中,而不是在文件系統的訪問控制列表(ACL))。

ResolveRequestCache

此事件確定是否頁面可以從輸出緩存提供服務。如果要編寫自己的緩存模塊(例如,構建基於文件的緩存而不是內存緩存),請同步此事件以確定是否從緩存中提供頁面,否則將生成新頁面。

的AcquireRequestState

會話狀態從狀態存儲中檢索。如果你想構建你自己的狀態管理模塊,那麼請同步這個事件來從狀態存儲中獲取會話狀態。在執行HTTP處理程序之前發生

的PreRequestHandlerExecute

此事件。

PostRequestHandlerExecute

在執行HTTP處理程序之後發生此事件。

ReleaseRequestState

會話狀態存儲找回狀態商店。如果您正在構建自定義會話狀態模塊,那麼您必須將狀態存儲回狀態存儲區。

的UpdateRequestCache

此事件寫入輸出返回到輸出緩存器。

EndRequest

請求已經完成。

0

想要在httpmodule的PreSendRequestContent事件中調用緩存方法。問題是根據客戶需求在我的應用程序中添加了Web頁眉和頁腳,我無法緩存該內容圖像,javascript和css。目前我正在使用httpmodule的ReleaseRequestState方法。