麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

ASP.NET 運行機制續(完結)

2019-11-17 01:36:56
字體:
來源:轉載
供稿:網友

asp.net 運行機制續(完結)

上一篇說到applicationInstance會執行一些列的事件。下面是我在msdn上找到有關asp.net程序生命周期相關的描述及圖片

聲明周期的起始

ASP.NET 應用程序的生命周期以瀏覽器向 Web 服務器(對于 ASP.NET 應用程序,通常為 IIS)發送請求為起點。ASP.NET 是 Web 服務器下的 ISAPI 擴展。Web 服務器接收到請求時,會對所請求的文件的文件擴展名進行檢查,確定應由哪個 ISAPI 擴展處理該請求,然后將該請求傳遞給合適的 ISAPI 擴展。ASP.NET 處理已映射到其上的文件擴展名,如 .aspx、.ascx、.ashx 和 .asmx。

ASP.NET 接收對應用程序的第一個請求

當 ASP.NET 接收到對應用程序中任何資源的第一個請求時,名為ApplicationManager的類會創建一個應用程序域。應用程序域為全局變量提供應用程序隔離,并允許單獨卸載每個應用程序。在應用程序域中,將為名為HostingEnvironment的類創建一個實例,該實例提供對有關應用程序的信息(如存儲該應用程序的文件夾的名稱)的訪問。

為每個請求創建 ASP.NET 核心對象

創建了應用程序域并對HostingEnvironment對象進行了實例化之后,ASP.NET 將創建并初始化核心對象,如HttpContext、HttPRequest和HttpResponse。HttpContext類包含特定于當前應用程序請求的對象,如HttpRequest和HttpResponse對象。HttpRequest對象包含有關當前請求的信息,包括 Cookie 和瀏覽器信息。HttpResponse對象包含發送到客戶端的響應,包括所有呈現的輸出和 Cookie。

將HttpApplication對象分配給請求

初始化所有核心應用程序對象之后,將通過創建HttpApplication類的實例啟動應用程序。如果應用程序具有 Global.asax 文件,則 ASP.NET 會創建 Global.asax 類(從HttpApplication類派生)的一個實例,并使用該派生類表示應用程序。

注意注意第一次在應用程序中請求 ASP.NET 頁或進程時,將創建HttpApplication的一個新實例。不過,為了盡可能提高性能,可對多個請求重復使用HttpApplication實例。

創建HttpApplication的實例時,將同時創建所有已配置的模塊。例如,如果將應用程序這樣配置,ASP.NET 就會創建一個sessionStateModule模塊。創建了所有已配置的模塊之后,將調用HttpApplication類的Init方法。

由HttpApplication管線處理請求。

在處理該請求時將由HttpApplication類執行以下事件。希望擴展HttpApplication類的開發人員尤其需要注意這些事件。

  1. 對請求進行驗證,將檢查瀏覽器發送的信息,并確定其是否包含潛在惡意標記。有關更多信息,請參見ValidateRequest和腳本侵入概述。

  2. 如果已在 Web.config 文件的UrlMappingsSection節中配置了任何 URL,則執行 URL 映射。

  3. 引發BeginRequest事件;第一個事件

  4. 引發AuthenticateRequest事件;驗證請求,開始檢查用戶的身份,一把是獲取請求的用戶信息

  5. 引發PostAuthenticateRequest事件;用戶身份已經檢查完畢,檢查完成后可以通過HttpContext的User屬性獲取到,微軟內置的身份驗證機制,平時很少用到

  6. 引發AuthorizeRequest事件;開始進行用戶權限檢查,如果用戶沒有通過上面的安全檢查,一般會直接調至EndRequest事件,也就是直接跳至最后一個事件

  7. 引發PostAuthorizeRequest事件;用戶請求已經獲取授權

  8. 引發ResolveRequestCache事件;緩存,如果存在以前處理的緩存結果,則不再進行請求處理工作,返回緩存結果

  9. 引發PostResolveRequestCache事件;緩存檢查結束

  10. 根據所請求資源的文件擴展名(在應用程序的配置文件中映射),選擇實現IHttpHandler的類,對請求進行處理。如果該請求針對從Page類派生的對象(頁),并且需要對該頁進行編譯,則 ASP.NET 會在創建該頁的實例之前對其進行編譯;創建所請求的前臺頁面類

  11. 引發PostMapRequestHandler事件;已經創建處理請求的處理器對象(IHttpHandler)

  12. 引發AcquireRequestState事件;獲取請求狀態,一般用于獲取session

  13. 引發PostAcquireRequestState事件。已經獲取到了session,如果獲取到,則將session的值封裝到httpcontext中的session屬性中去,

  14. 引發PreRequestHandlerExecute事件。以為上個事件已經封裝了session信息,所以接下來就是驗證身份信息的最好位置,如果不通過,直接處理,提高效率。這里也是準備執行處理程序,及調用HttpContext中Handler屬性的ProcessRequest

  15. 為該請求調用合適的IHttpHandler類的ProcessRequest方法(或異步版IHttpAsyncHandler.BeginProcessRequest)。例如,如果該請求針對某頁,則當前的頁實例將處理該請求。

  16. 引發PostRequestHandlerExecute事件;頁面的ProcessRequest方法執行完成

  17. 引發ReleaseRequestState事件;準備釋放請求狀態session

  18. 引發PostReleaseRequestState事件;已經釋放請求狀態

  19. 如果定義了Filter屬性,則執行響應篩選。

  20. 引發UpdateRequestCache事件;更新緩存

  21. 引發PostUpdateRequestCache事件;更新緩存完畢

  22. 引發EndRequest事件;結束請求

  23. 引發PreSendRequestHeaders事件;可通過發送的頭信息設置參數,例如將類型設置為text/plain等

  24. 引發PreSendRequestContent事件;處理數據,如配置壓縮,則可在這里對數據進行壓縮發送

好了,不貼人家的東西了,感興趣的可以到原網站去看一下。我們重點就是看一下HttpApplication管線處理請求。下面是對事件的解釋

事件
名稱說明
公共事件AcquireRequestState當 ASP.NET 獲取與當前請求關聯的當前狀態(如會話狀態)時發生。
公共事件AuthenticateRequest當安全模塊已建立用戶標識時發生。
公共事件AuthorizeRequest當安全模塊已驗證用戶授權時發生。
公共事件BeginRequest在 ASP.NET 響應請求時作為 HTTP 執行管線鏈中的第一個事件發生。
公共事件Disposed在釋放應用程序時發生。
公共事件EndRequest在 ASP.NET 響應請求時作為 HTTP 執行管線鏈中的最后一個事件發生。
公共事件Error當引發未經處理的異常時發生。
公共事件LogRequest恰好在 ASP.NET 為當前請求執行任何記錄之前發生。
公共事件MapRequestHandler基礎結構。在選擇了用來響應請求的處理程序時發生。
公共事件PostAcquireRequestState在已獲得與當前請求關聯的請求狀態(例如會話狀態)時發生。
公共事件PostAuthenticateRequest當安全模塊已建立用戶標識時發生。
公共事件PostAuthorizeRequest在當前請求的用戶已獲授權時發生。
公共事件PostLogRequest在 ASP.NET 處理完LogRequest事件的所有事件處理程序后發生。
公共事件PostMapRequestHandler在 ASP.NET 已將當前請求映射到相應的事件處理程序時發生。
公共事件PostReleaseRequestState在 ASP.NET 已完成所有請求事件處理程序的執行并且請求狀態數據已存儲時發生。
公共事件PostRequestHandlerExecute在 ASP.NET 事件處理程序(例如,某頁或某個 xml Web service)執行完畢時發生。
公共事件PostResolveRequestCache在 ASP.NET 跳過當前事件處理程序的執行并允許緩存模塊滿足來自緩存的請求時發生。
公共事件PostUpdateRequestCache在 ASP.NET 完成緩存模塊的更新并存儲了用于從緩存中為后續請求提供服務的響應后,發生此事件。
公共事件PreRequestHandlerExecute恰好在 ASP.NET 開始執行事件處理程序(例如,某頁或某個 XML Web services)前發生。
公共事件PreSendRequestContent恰好在 ASP.NET 向客戶端發送內容之前發生。
公共事件PreSendRequestHeaders恰好在 ASP.NET 向客戶端發送 HTTP 標頭之前發生。
公共事件ReleaseRequestState在 ASP.NET
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: videos韩国 | 亚洲无线看| 鲁人人人鲁人人鲁精品 | 中文在线观看视频 | 国产亚洲精品yxsp | v片在线看 | 国产精品久久久久久久久久久久久久久久 | 国产男女 爽爽爽爽视频 | 国产美女爽到喷白浆的 | 久久亚洲成人 | 黄色的视频免费看 | 污污黄 | 国产精品成人一区 | 久色免费 | 日本在线高清 | 亚洲天堂在线电影 | 久久精品a一级国产免视看成人 | 神马顶级推理片免费看 | 91婷婷射 | 免费a视频在线观看 | 色吧综合网| 免费一级a毛片在线播放视 日日草夜夜操 | 成人情欲视频在线看免费 | 欧美一级做性受免费大片免费 | 国产精品久久久久久久av | 国产精品999在线观看 | 中文字幕在线亚洲 | 91羞羞 | 成人午夜在线观看视频 | 麻豆视频免费网站 | 视频国产一区二区 | 羞羞草视频 | 久久久久国产一区二区三区不卡 | 欧美a欧美 | 国产精品久久久久久久娇妻 | 黄色av一区二区三区 | 精品国产乱码久久久久久久 | 亚洲天堂在线电影 | 亚洲精品aⅴ中文字幕乱码 欧美囗交 | 久久色伦理资源站 | 中文字幕精品在线播放 |