IIS7 經典模式和集成模式的區別分析
2024-08-29 03:12:45
供稿:網友
經典模式是為了與之前的版本兼容,使用ISAPI擴展來調用ASP.NET運行庫,原先運行于IIS6.0下的Web應用程序遷移到IIS7.0中只要將應用程序配置成經典模式,代碼基本不用修改就可以正常運行。集成模式是一種統一的哀求處理管道,它將ASP.NET請求管道與IIS核心管道組合在一起,這種模式能夠提供更好的性能,能夠實現配置和治理的模塊化,而且增加了使用托管代碼模塊擴展IIS時的靈活性。假如老的Web應用程序運行于IIS7.0的集成模式下,可能需要對應用程序的web.config文件進行修改,尤其是使用了實現IHttpHandler接口的自定義模塊的情況。IIS7.0在同一個服務器上能夠同時支持兩種模式的應用程序。
IIS6.0中ASP.NET MMC管理單元用于配置ASP.NET,7.0中ASP.NET應用程序的管理域IIS管理更加緊密的集成在一起,不存在單獨的管理單元,所有的IIS和ASP.NET配置都是使用IIS管理器完成的。IIS7.0配置信息基于.NET framework配置系統,所以IIS7.0中運行的應用程序的web.config文件同時包含web服務器和ASP.NET配置設置,例如可以再web.config文件中設置擴展名和文件的映射(IIS6.0中必須在IIS中進行配置)。
web.config文件的變化
system.webServer節指定了應用于web應用程序的IIS7.0設置,其父節點是configuration,該節點中可以設置的內容包括:
當請求未包含指定資源時,Web服務器返回給客戶端的默認文檔(defaultDocument); 響應的壓縮設置(httpCompression) 自定義頭部(httpProtocol節的customHeaders) 模塊(modules) 處理程序(handlers)
其中的一些設置僅適用于集成模式,而不適用于經典模式,如經典模式下運行的應用程序則忽略web.config的system.WebServer節中指定的所有托管代碼模塊和處理程序,這種模式下web應用程序應該在syste.web節的httpModules和httpHandlers中定義模塊和處理程序。
將 Web 應用程序遷移到集成模式
不包含自定義模塊或處理程序的 Web 應用程序通常無需更改即可在 IIS 7.0 集成模式下正常工作。對于依靠于自定義模塊或處理程序的 Web 應用程序,需要執行以下步驟來使其能夠在集成模式下運行:
使用本主題稍后的將 Web Config 文件遷移到集成模式部分中描述的方法之一,在 Web.config 文件的 system.webServer 節中注冊自定義模塊和處理程序。
僅在自定義模塊的 Init 方法中定義 HttpApplication 請求管道事件(如 BeginRequest 和 EndRequest)的事件處理程序。
請確保您已解決 Upgrading ASP.NET Applications to IIS 7.0: Differences between IIS 7.0 Integrated Mode and Classic mode(將 ASP.NET 應用程序升級到 IIS 7.0:IIS 7.0 集成模式和經典模式之間的區別)的“Known Differences Between Integrated Mode and Classic Mode”(集成模式和經典模式之間的已知區別)部分中討論的問題。