国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - IIS7 應用程序池的 托管管道模式與集成模式小結

IIS7 應用程序池的 托管管道模式與集成模式小結

2019-09-12 11:46mdxy-dxy ASP.NET教程

而 IIS 7 完全整合 .NET 之后,架構的處理順序有了很大的不同(如下圖),最主要的原因就是 ASP.NET 從 IIS 插件(ISAPI extension)的角色,進入了 IIS 核心,而且也能以 ASP.NET 模塊負責處理 IIS 7 的諸多類型要求。

IIS 7 托管管道模式 經典模式(Classic) 集成模式(Integrated) 分析與理解

IIS 7.0 支持兩種管道模式:一種是IIS 7.0最新提供的集成管道模式,另一種是經典管道模式,經典管道模式是由先前版本的IIS提供的。

我們可以通過應用程序池設置管道模式,這項功能對IIS管理員尤其有用,因為這樣既可以令一臺服務器僅運行一種模式,也可以令兩種模式同時運行于一臺服務器上。

上述兩種管道模式使用的web.config文件存在重大的區別,許多在經典管道模式下能夠正常工作的web.config文件都無法在集成管道模式下正常工作。利用AppCmd.exe,我們可以將經典管道模式下的配置文件格式自動轉換為集成管道模式下的配置文件格式。

我們有必要首先看看各種模式的結構,并且研究兩種模式之間的區別。

1. 經典模式

在IIS 6.0中的經典模式中,ASP.NET是一個添加到IIS中的ISAPI。IIS 7.0之所以支持這種模式,是為了做到向后兼容。但是,經典模式缺少許多集成模式才能提供的特性。在經典模式中,IIS擁有自身的管道,這些管道可以通過創建一個ISAPI擴展進行擴充,而ISAPI擴展是以難以開發而著稱的。ASP.NET作為一個ISAPI擴展運行,只是IIS管道中的一項組成部分。

下圖很好地解釋了上述情況。注意,在這種情況下,ASP.NET似乎是一種類似于馬后炮的成果,僅當IIS處理ISAPI擴展時才能夠發揮作用。

利用文件擴展名,可以判斷使用哪個ISAPI處理程序。例如,可以將擴展名為.aspx 和.ascx的文件映射到aspnet_isapi.dll;并且將擴展名為.asp的文件映射到asp.dll,這樣就可以處理傳統的ASP頁面;此外,將擴展名為.php的文件映射到php.dll,這樣就可以處理PHP頁面,前提是已經安裝了php.dll。

此外,在IIS 6.0和IIS 7.0的經典模式中,某些特性是重復的。例如,錯誤處理就是一種重復的特性,因為IIS可以處理非ASP.NET頁面,而ASP.NET可以處理所有將處理程序映射為aspnet_isapi.dll的頁面。

在IIS 6.0中,我們可以將所有文件類型都映射到ASP.NET,但是這樣做存在一些限制。最大的限制就是如何處理默認文檔:一個默認文檔僅當在global.asax中或者在一個HTTP模塊中被指定為默認文檔時,這個默認文檔才能夠得到處理。某些自定義的配置需要使用aspnet_isapi.dll處理所有的文件類型。IIS 7.0可以輕易地解決這個問題。

經典模式可以在無須修改web.config的前提下運行現有的Web網站,因此,如果使用的Web farm中既包括IIS 6.0服務器,也包括IIS 7.0服務器,或者因為某些原因無法將web.config文件轉換為遵循新語法的web.config文件,那么就可以使用經典模式。

2. 集成模式

利用集成模式,可以將ASP.NET作為IIS的有機組成部分。現在,IIS服務器的功能被劃分為40多個模塊,因此也就將IIS和ASP.NET的功能劃分為不同的組成部分。諸如StaticFileModule、BasicAuthenticationModule、FormsAuthentication、Session、Profile,以及RoleManager等模塊都是IIS管道的組成部分。注意,FormsAuthentication、Session、Profile,以及RoleManager原本就是ASP.NET的組成部分,與IIS并無關系。

下圖使用模塊解釋了IIS管道。這些模塊原本是ASP.NET的組成部分,現在已經是IIS管道的有機組成部分。
IIS管道提供了二十多種事件,開發人員可以利用這些事件來擴展Web服務器的功能。實際上,通過創建定制模塊,同時更新applicationHost.config,可以僅使用自定義模塊,而無須再使用微軟公司提供的內置模塊,我們可以將IIS 7.0中的模塊替換為自定義的模塊。

3. 兩種模式之間配置的區別

其實,總的來說最大的差別就是經典模式處理ASP.NET程序時,需要退出管道,然后把程序轉入ASP.NET ISAPI過濾器,通過ISAPI的處理,在將一個HTTP響應返回給客戶端之前,這個請求再返回管道。而集成模式把ASP.NET已經集成到管道中,是處理無論ASP.NET程序還是非ASP.NET程序都在管道中進行,不考慮程序類型。簡化了工作。

補充

IIS 7.0對配置文件進行了一些修改,Web開發人員可以使用這些修改內容。例如,<system.webServer>節就是這樣一項修改,無論是經典模式還是集成模式都可以識別<system.webServer>節,同時,<system.webServer>節既可以在applicationHost.config文件中設置,也可以在web.config文件中設置。<system.webServer>節既可以控制靜態頁面,也可以控制動態頁面。即使在經典模式中,<system.webServer>節也具有重要作用,它可以幫助Web開發人員在web.config文件中設置不同的IIS配置。

在集成模式中,HTTP模塊和HTTP處理程序不再定義于<system.web>中,而是定義于<system.webServer>中。如果在集成模式中運行一個包括了HTTP模塊或HTTP處理程序的web.config文件,那么將會發生失效。幸運的是,微軟公司已經詳細規定了一個編號為500.22的錯誤信息,這個錯誤信息說明了如何一步步地遷移web.config文件。

IIS 7.5 中配置 <system.webServer> 節點

 

問題

IIS7.5 中配置 <customError><error> 節點的404頁面不起作用

分析

<system.web>節點是iis7.0之前版本的主要配置節點,在II7.0以后IIS管道處理與ASP.NET管道處理進行了集成,提高了ASP.NET的處理性能。由于程序運行在IIS7.5集成模式下,需要在<system.webServer>節點中配置,新增加的<system.webServer>節點中需要進行哪些修改以程序在IIS7的集成模式下能完全生效呢,主要包含以下幾個方面:

(1) <modules> ----- 相當于<system.web>中的<httpModules>

(2) <handlers> ----- 相當于<system.web>中的<httpHandlers>

(3) <customError>下的<error> ----- 相當于<system.web>中的<httpErrors>

以上三點中,如果你的程序中有自定義的httpModules或者httpHandlers的話,那么第一點和第二點非常重要,具體資料請MSDN。

配置

<httpErrors errorMode="DetailedLocalOnly">
<remove statusCode="404" />
<error statusCode="404" path="/404.htm" responseMode="ExecuteURL" />
</httpErrors>

補充

errorMode有三個值,分別為Custom、DetailedLocalOnly、Detailed,意思為對用戶與服務器端始終顯示自定義頁面、只能服務器端顯示詳細出錯信息、對用戶與服務器端始終顯示詳細出錯信息。

responseMode有File、ExecuteUrl、Redirect三個層,分別表示使用服務器端靜態文件、可執行的URL、URL轉向。

注意:<httpErrors>與<customErrors>是不同的,前者主要用于處理http相關的錯誤信息,而后者主要是處理應用程序級的錯誤頁轉向。

<customErrors>

同樣,如果Application_Error和<customerErrors>同時存在,也存在執行順序的問題。因為優先級Application_Error事件> <customErrors>配置項,所以發生應用程序級錯誤時,優先執行Application_Error事件中的代碼,如果Application_Error事件中調用了Server.ClearError()函數,<customerErrors>配置節中的defaultRedirect不起作用,因為Exception已經被清除;如果Application_Error事件中沒用調用了Server.ClearError()函數,錯誤頁會重新定位到defaultRedict指定的URL頁面,為用戶顯示友好出錯信息。

通過對.NET提供的以上四種錯誤處理機制的分析,我們可以把它們從不同的角度分類,便于我們理解和使用。

1、從功能上分類:用于異常處理(Handling exceptions)是Page_Error事件和Application_Error事件;用戶錯誤頁面重定向(Redirecting the user to an error page)的是 ErrorPage屬性 和 <customErrors>配置項。

2、從錯誤處理的范圍分類:用于頁面級(Page level)錯誤處理的是Page_Error事件 和 ErrorPage屬性;用于應用程序級(Application level)錯誤處理的是Application_Error事件 和 <customErrors>配置項。

 

這些 ASP.NET 模塊不只能處理 ASP.NET 網頁程序,也能處理其他如 ASP 程序、PHP 程序或靜態 HTML 網頁,也因為 ASP.NET 的諸多功能已經成為 IIS 7 的一部份,因此 ASP 程序、PHP 程序或靜態 HTML 網頁等類型的要求,也能使用像是Forms認證(Forms Authentication)或輸出緩存(Output Cache)等 ASP.NET 2.0 的功能(但須修改 IIS 7 的設定值)。也因為 IIS 7 允許自行以 ASP.NET API 開發并加入模塊,因此 ASP.NET 網頁開發人員將更容易擴充 IIS 7 和網站應用程序的功能,甚至能自行以 .NET 編寫管理 IIS 7 的程序(例如以程控 IIS 7 以建置網站或虛擬目錄) 

IIS7 應用程序池的 托管管道模式與集成模式小結


IIS 7 的執行架構圖(集成托管信道模式下的架構) 
小結 
IIS5 到 IIS6 的改進,主要是 HTTP.sys 的改進。 
IIS6 到 IIS7 的改進,主要是 ISAPI 的改進。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久久夜夜夜 | 在线观看成人小视频 | 久久综合伊人 | 国产乱码一区二区三区 | 欧州一区二区三区 | 亚洲精品国精品久久99热 | 国产成人综合网 | 日日夜夜狠狠干 | 欧美一区二区三区久久久久久桃花 | 国产在线小视频 | 亚洲国产成人91精品 | 国产精品不卡 | 黄色中文字幕 | 中文字幕一区二区三区日韩精品 | 欧美精品一区二区三区一线天视频 | 四季久久免费一区二区三区四区 | 久久久久久久国产 | 91精品国产综合久久小仙女陆萱萱 | 最好观看的2018中文 | 国产免费性 | 在线国产一区二区 | 精品一区二区三区免费 | 成人aaa视频 | 欧美成人精品一区二区三区在线看 | 四虎永久免费 | 久久久久一区二区三区 | 欧美一区2区三区4区公司二百 | 久久久高清 | 国产成人精品一区二 | 91视频在线 | 一级片在线观看 | 亚洲精品无 | 天天夜夜操 | 亚洲国产中文字幕 | 中文字幕视频在线观看 | 免费一级毛片电影 | 一级片在线播放 | 日韩电影免费在线观看 | 久久久久久久久成人 | av看片网站| 最近中文字幕 |