ASP.NET 進程模型
1,兩種進程模型:
①、IIS 5.0系: Aspnet_wp.exe
早於 6.0 的 IIS 版本使用 ASP.NET 進程模型 (Aspnet_wp.exe)。
比如IIS 5.0和IIS 5.1 (Windows XP 下預設)
每一個單獨的應用程式版本在運行時自動運行在獨立的進程中。
定位到同一運行庫版本的所有應用程式共用同一進程(或網路園模式中的多個進程)。
②、IIS 6.0 : w3wp.exe
IIS 6.0 使用 IIS 6.0 進程模型 (w3wp.exe),採取應用程式集區隔離功能。
只要應用程式共用同一池標識,應用程式集區就允許它們在一個或多個進程中同時運行。
如果應用程式所分配的應用程式集區不同,它們就被隔離,永遠不能在同一進程中運行。
2,同一進程中的問題:
①,多個版本的 .NET Framework產生衝突
如果在使用 IIS 6.0 的電腦上安裝了多個版本的 .NET Framework,則會產生衝突。
您可能會在“應用程式事件”日誌中看到類似於下面的錯誤資訊。
不能在同一 IIS 進程中運行不同版本的 ASP.NET。請使用 IIS 管理工具重新設定伺服器,
以便在單獨的進程中運行應用程式。
如果有多個版本的 .NET Framework ASP.NET 運行在同一進程中,就會發生這一錯誤。
不同版本的 .NET Framework 和運行庫不能在同一進程中並行共存。
如果兩個或多個應用程式被映射到不同版本的 ASP.NET,但共用同一應用程式集區,
通常就會發生這一衝突錯誤。
②、應用程式相互影響
如果進程中某一應用程式異常終了,也會影響到其他該進程下的其他應用程式。
3,隔離模式
為了分隔和保護同時啟動並執行 ASP.NET 應用程式,從而牽扯到隔離模式。
(IIS) 6.0 提供兩種不同的應用程式隔離模式。
預設情況下,使用輔助進程隔離模式。但是,為向後相容,也提供了 IIS 5.0 隔離模式。
以下說明這兩種應用程式隔離模式以及如何設定模式。
①、輔助進程隔離模式
在 IIS 6.0 中,預設的應用程式隔離模式是輔助進程隔離模式。
在此模式中,禁用內建於 ASP.NET 中的進程模型,而是使用 IIS 6.0 的輔助進程隔離結構。
在 Machine.config 檔案的 <processModel> 元素中指定的任何配置設定均被忽視,
以下屬性除外:
- maxWorkerThreads
- maxIoThreads
- responseDeadlockInterval
在IIS6.0輔助進程隔離模式下,必須通過IIS管理器來手動設定適當的應用程式集區設定。
有關設定適當的應用程式集區設定的資訊,請參見:
IIS 6.0 輔助進程隔離模式的應用程式集區設定
②、IIS 5.0 隔離模式
當 IIS 6.0 處於 IIS 5.0 隔離模式時,禁用 IIS 6.0 的輔助進程隔離結構,
並且內建於 ASP.NET 中的進程模型用於電腦上的所有 ASP.NET 應用程式。
在此模式中,進程模型設定是通過 Machine.config 檔案的 <processModel> 元素指定的。
有關在使用 IIS 5.0 隔離模式時配置進程模型設定的更多資訊,請參見 :
IIS 5.0 隔離模式ASP.NET 配置
4、設定應用程式隔離模式
在使用 IIS 6.0 時,可以選擇輔助進程隔離模式或 IIS 5.0 隔離模式。
應用程式隔離模式全域應用於 IIS 服務並影響電腦上的所有 Web 應用程式。
不能將應用程式隔離模式應用於單獨的應用程式。
在 IIS 6.0 中選擇應用程式隔離模式
- 開啟 IIS 管理主控台,單擊加號展開本機電腦。
- 右擊“Web 網站”檔案夾,單擊“屬性”,然後單擊“服務”選項卡。
- 在“隔離模式”下,選取“以 IIS 5.0 隔離模式運行 Web 服務”複選框以選擇 IIS 5.0 隔離模式,或者清除該複選框以選擇輔助進程隔離模式。
“Web 網站屬性”對話方塊的“服務”選項卡
以上,是針對兩種隔離模式的基本說明。
關於隔離模式的設定,及其產生的影響和問題,下篇
IIS 6.0 輔助進程隔離模式的應用程式集區設定
IIS 5.0 隔離模式ASP.NET 配置