IIS 7.0的ASP.NET应用程序生命周期概述
小結于:http://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx
IIS 7.0的ASP.NET應用程序生命周期概述
(一)結構概述
在IIS 7.0集成模式下的請求會經歷幾個階段,類似于在 IIS 6.0 中對 ASP.NET 資源的請求所經歷的階段。但是,在 IIS 7.0 中,這些階段包含多個額外的應用程序事件,如MapRequestHandler、LogRequest 和 PostLogRequest事件。
IIS 7.0和IIS 6.0的處理階段之間的主要區別在于ASP.NET如何與IIS服務器集成。在IIS 6.0中,有兩個請求處理管道。一個管道用于本機代碼ISAPI篩選器和擴展組件[IIS],另一個管道用于托管代碼應用程序組件[ASP.NET管道]。在IIS 7.0中,ASP.NET運行時與Web服務器集成,這樣就有了一個針對所有請求的統一的請求處理管道。對于 ASP.NET 開發人員,集成管道有以下益處:
1)集成管道引發由 HttpApplication 對象公開的所有事件,這使現有的ASP.NET HTTP Module可在 IIS 7.0 集成模式下工作。
2)在Web服務器級別、網站級別或Web應用程序級別,都可配置本機代碼和托管代碼模塊。這包括用于會話狀態、Forms身份驗證、配置文件以及角色管理的內置ASP.NET托管代碼模塊。此外,可以為所有請求啟用或禁用托管代碼模塊,無論請求是否針對ASP.NET資源(如 aspx 文件)。
3)可以在管道中的任何階段調用托管代碼模塊。這包括在對請求進行任何服務器處理之前,在所有服務器處理都已發生之后,或者兩者間的任何階段。
4)可以通過應用程序的Web.config文件注冊模塊,也可以啟用或禁用模塊。
(二)生命周期階段
下表列出了在 IIS 7.0 集成模式下運行的 ASP.NET 應用程序生命周期的各個階段。
(三)使用Global.asax文件
Global.asax文件在IIS 7.0中的集成模式下的使用與在IIS 6.0的ASP.NET中的使用有諸多類似。其中一個區別是:您可以為MapRequestHandler、LogRequest 和 PostLogRequest事件添加處理程序。對于在IIS 7.0集成模式下運行并且與.NET Framework 3.0或更高版本一起運行的應用程序,可以支持這些事件。
可以在 Global.asax 文件中提供應用程序事件處理程序,以添加對 ASP.NET 資源請求(例如對 .aspx 和 .axd 頁的請求)的執行代碼。但是,不會調用 Global.asax 文件中的處理程序代碼來處理對非 ASP.NET 資源(如靜態文件)的請求。若要運行為所有資源運行的托管代碼,請創建一個實現 IHttpModule 接口的自定義模塊。該自定義模塊將會運行,以處理對應用程序中所有資源的請求,即使資源處理程序不是 ASP.NET 處理程序。
(四)開發自定義托管代碼模塊(HttpModule)
可使用實現IHttpModule接口的模塊來擴展 ASP.NET 應用程序生命周期,實現 IHttpModule 接口的模塊為托管代碼模塊??梢詫⑼泄艽a模塊定義為應用程序的App_Code文件夾中的一個類文件。還可以將模塊創建為一個類庫項目,并編譯該項目,然后將其添加到應用程序的 Bin 文件夾下。創建自定義模塊后,必須在 IIS 7.0 中注冊它,常用的方法是在Web.config文件中注冊
如果某個模塊在應用程序的 App_Code 或 Bin 文件夾中定義,并且已在應用程序的 Web.config 文件中注冊,則此模塊僅為該應用程序調用。若要在應用程序的 Web.config 文件中注冊模塊,可以在 system.webServer 節點中的 modules 元素中進行配置。
托管代碼模塊也可以在 IIS 7.0 配置存儲區(ApplicationHost.config 文件)的 modules 元素中注冊。在 ApplicationHost.config 文件中注冊的模塊具有全局范圍,因為它們為所有由 IIS 7.0 承載的 Web 應用程序而注冊。
?
轉載于:https://www.cnblogs.com/notebook2011/archive/2013/02/21/2889675.html
總結
以上是生活随笔為你收集整理的IIS 7.0的ASP.NET应用程序生命周期概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Data Mining Tools
- 下一篇: 有关采用SMIv2 Internet协议