對IIS7經典模式和整合模式的理解

2021-07-17 03:41:50 字數 2233 閱讀 2040

從iis6新增應用程式池的概念,到現在iis7,對http請求處理功能已經越來越精確化和不斷改善,iis7應用程式池新增了經典模式和整合模式可供選擇,不管官方還是一些書籍或文章都有介紹,但多數過於官方話,下面白話一下我對經典模式和整合模式的理解,希望能對自己以後和其他人更貼切的參考。涉及iis解析asp.net的生命期等知識我就簡單過一下,書籍和網路介紹的都比較多,本篇文章主要講下我對經典模式和整合模式理解的區別和應用。

先直接看乙個結果,再分析原因。編寫乙個最簡單的**,和乙個最簡單的httpmodule。

程式結構如上,第乙個moduleiistests是乙個**,裡面包括aspx和htm檔案,default.aspx檔案內容為空,a.htm檔案內容為aaaaaa,下面乙個testiismodule是乙個類庫,tmodule.cs是繼承自ihttpmodule的乙個自定義的htppmodule,主要**如下:

public

public

void context_beginrequest(object sender, eventargs e)

然後配置**的web.config如下:

。。。

。。。

注意:這裡是在system.web節點下。然後掛接iis:

我新增了**mymodule指向剛才程式開發的**,引用程式池用的.net2.0經典模式,分別訪問default.aspx和a.htm:

default.aspx被module攔截了,輸出了文字內容,但a.htm還是保持檔案內容不變輸出。

現在更改下web.config,首先刪除剛才system.web節點下的httpmodule節點,配置如下:

。。。

。。。

注意:這裡是在system.webserver節點下配置的,iis整合模式下會讀取該大節點下的modules,handlers等節點,然後把應用程式池改為整合模式,再重新整理iis,重新訪問如下:

default.aspx還是被攔截到了,但是這裡a.htm也被攔截了。

擷取微軟官方一篇文章的圖,介紹iis7整合管道下的事件生命週期如下:

從該生命週期可以看出,整合模式下不管託管**還是本機**,都可以在身份驗證和執行處理程式被插入到核心**的託管**攔截。在iis6下,要想攔截本機**,比如htm檔案,需要編寫win32的非託管**,但它也保留擴充套件的isapi,我們可以寫託管**攔截託管檔案的請求。雖然iis6也可以通過iis插入isapi為aspnet_isapi.dll的擴充套件,處理對htm檔案的攔截,但它實際會走兩個通道,首先是iis內部的本機**攔截,然後是託管**isapi的攔截。經典模式就是為了保留和iis6一樣的處理方式,以前開發的**,可以方便的移植到iis7上。

iis7整合模式還增加了maprequesthandler、logrequest 和 postlogrequest 事件,如果在經典模式下加了這些處理事件,會丟擲:此操作要求使用 iis 整合管線模式。如果整合模式下不讓iis處理不相容整合模式的配置以及處理方式,可以在web.config中配置:

<

system.webserver

>

<

validation

validateintegratedmodeconfiguration

="false"/>

system.webserver

>

即可。

實際上iis7整合模式,就是讓使用者可以通過編寫託管**的handler等,把託管**插入到iis核心**中來解析,方便大家精確控制任意請求,帶來更好的擴充套件性。但缺點呢,我認為整合模式,任何檔案請求都可能經過託管**處理,別人不想把類試和靜態檔案用託管**處理,就得想其他辦法了,這樣會不會內部效率降低,但這都是個人觀點。

上面簡單白話了一下我對iis7整合模式和經典模式的理解,可能有表述不對的地方,歡迎拍磚。

IIS7的整合模式和經典模式

從網上找到的這篇文章 iis7.0中的web應用程式有兩種配置模式 經典模式和整合模式。經典模式是為了與之前的版本相容,使用isapi擴充套件來呼叫asp.net執行庫,原先執行於iis6.0下的web應用程式遷移到iis7.0中只要將應用程式配置成經典模式,基本不用修改就可以正常執行。整合模式是一...

IIS7的整合模式和經典模式

一 iis7中整合模式與經典模式的區別 iis7.0中的web應用程式有兩種配置模式 經典模式和整合模式。經典模式是為了與之前的版本相容,使用isapi擴充套件來呼叫asp.net執行庫,原先執行於iis6.0下的web應用程式遷移到iis7.0中只要將應用程式配置成經典模式,基本不用修改就可以正常...

IIS7 經典模式和整合模式的區別

iis7.0中的web應用程式有兩種配置模式 經典模式和整合模式。經典模式是為了與之前的版本相容,使用isapi擴充套件來呼叫asp.net執行庫,原先執行於iis6.0下的web應用程式遷移到iis7.0中只要將應用程式配置成經典模式,基本不用修改就可以正常執行。整合模式是一種統一的哀求處理管道,...