processModel 項目 (ASP.NET 設定結構描述)
更新:2007 年 11 月
設定 Microsoft Internet Information Services (IIS) Web 伺服器上的 ASP.NET 處理序模型設定。processModel 區段只能在 Machine.config 檔內設定,並會影響在伺服器上執行的所有 ASP.NET 應用程式。
警告: |
---|
processModel 項目的變更只有在重新啟動背景工作處理序後才會生效,而不是與其他組態項目一樣,在變更設定後立即生效。如需詳細資訊,請參閱這個主題中稍後的<備註>。 |
configuration 項目 (一般設定結構描述)
system.web 項目 (ASP.NET 設定結構描述)
processModel 項目 (ASP.NET 設定結構描述)
<processModel
enable="true|false"
timeout="hrs:mins:secs|Infinite"
idleTimeout="hrs:mins:secs|Infinite"
shutdownTimeout="hrs:mins:secs|Infinite"
requestLimit="num|Infinite"
requestQueueLimit="num|Infinite"
restartQueueLimit="num|Infinite"
memoryLimit="percent"
webGarden="true|false"
cpuMask="num"
userName="<username>"
password="<secure password>"
logLevel="All|None|Errors"
clientConnectedCheck="hrs:mins:secs|Infinite"
comAuthenticationLevel="Default|None|Connect|Call|
Pkt|PktIntegrity|PktPrivacy"
comImpersonationLevel="Default|Anonymous|Identify|
Impersonate|Delegate"
responseDeadlockInterval="hrs:mins:secs|Infinite"
responseRestartDeadlockInterval="hrs:mins:secs|Infinite"
autoConfig="true|false"
maxWorkerThreads="num"
maxIoThreads="num"
minWorkerThreads="num"
minIoThreads="num"
serverErrorMessageFile=""
pingFrequency="Infinite"
pingTimeout="Infinite"
maxAppDomains="2000"
/>
屬性和項目
下列章節會說明屬性 (Attribute)、子項目和父項目。
屬性
屬性 |
說明 |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
autoConfig |
指定是否自動進行下列設定,以根據電腦組態達到最佳效能:
這些值將會根據以下知識庫文件進行設定:https://support.microsoft.com/?id=821268。 這個屬性不會影響 .NET Framework 用戶端應用程式,只會影響 ASP.NET 應用程式。 autoConfig 屬性可以是下列其中一個值。
除非先前已有組態,否則 Machine.config 檔中的預設值為 True。 |
||||||||||||||||
clientConnectedCheck |
指定 ASP.NET 在檢查用戶端是否連線之前,將要求留在佇列中的時間。 預設為 "00:00:05" (5 秒)。 |
||||||||||||||||
comAuthenticationLevel |
指定 DCOM 安全性的驗證層級。 comAuthenticationLevel 屬性可以是下列其中一個值。
預設值為 Connect。 |
||||||||||||||||
comImpersonationLevel |
指定 COM 安全性的驗證層級。 comImpersonationLevel 屬性可以是下列其中一個值。
預設值為 Impersonate。 |
||||||||||||||||
cpuMask |
指定多重處理器的伺服器上執行 ASP.NET 處理序的合格處理器 (CPU)。這個值指定位元模式,以表示執行 ASP.NET 執行緒的合格 CPU。例如,cpuMask 十六進位值 0x0d 代表位元模式 1101。在具有四個 CPU 的電腦上,這表示 ASP.NET 處理序可排程於 CPU 0、2 和 3,但不可排程於 CPU 1。ASP.NET 會為每個合格的 CPU 啟動一個背景工作處理序。如果 webGarden 屬性為 true,這個屬性便會將背景工作處理序限制在合格的 CPU 數目上。背景工作處理序的最大數目便會等於 CPU 的數目。如果 webGarden 為 false,便會忽略這個屬性,而且只會執行一個背景工作處理序。這是預設行為。 預設值為 "0xffffffff"。 |
||||||||||||||||
enable |
指定是否啟用處理序模型。 enable 屬性可以是下列其中一個值。
預設值為 true。 |
||||||||||||||||
idleTimeout |
以 hr:min:sec 字串格式指定於 ASP.NET 自動結束背景工作處理序後,不進行任何動作的週期。 預設值為 Infinite。 |
||||||||||||||||
logLevel |
指定要記錄至事件記錄中的事件型別。 logLevel 屬性可以是下列其中一個值。
預設值為 Errors。 |
||||||||||||||||
maxAppDomains |
指定在一個處理序中允許最大的應用程式定義域數目。 這個屬性可以小於或等於 2000。 預設值為 2000。 |
||||||||||||||||
maxIoThreads |
設定每一 CPU 用於處理序的最大 I/O 執行緒個數。例如,如果在單一處理器伺服器上這個值為 25,ASP.NET 就會使用執行階段 API 將處理序限制設定為 25。在雙處理器伺服器上,則會將限制設定為 50。這個屬性的值必須等於或大於 httpRuntime 組態區段中的 minFreeThread 屬性設定。 如需執行緒型別的詳細資訊,請參閱改善 ASP.NET 效能中的<執行緒說明>(英文)。 這個屬性的範圍是從 5 到 100。 預設值為 20。 |
||||||||||||||||
maxWorkerThreads |
設定每一 CPU 用於處理序的最大背景工作執行緒 (Worker Thread) 個數。例如,如果在單一處理器伺服器上這個值為 25,ASP.NET 就會使用執行階段 API 將處理序限制設定為 25。在雙處理器伺服器上,則會將限制設定為 50。這個屬性的值必須等於或大於 httpRuntime 組態區段中的 minFreeThread 屬性設定。 如需執行緒型別的詳細資訊,請參閱改善 ASP.NET 效能中的<執行緒說明>(英文)。 這個屬性的範圍是從 5 到 100。 預設值為 20。 |
||||||||||||||||
memoryLimit |
指定在 ASP.NET 啟動新處理序並重新指派現有的要求之前,背景工作處理序可使用的最大記憶體大小,以總系統記憶體的百分比表示。 預設值為 60。 |
||||||||||||||||
minIoThreads |
設定每一 CPU 用於處理序的最小 I/O 執行緒個數。請參閱 maxIoThreads。 如需執行緒型別的詳細資訊,請參閱改善 ASP.NET 效能中的<執行緒說明>(英文)。 預設值為 1。 |
||||||||||||||||
minWorkerThreads |
設定每一 CPU 用於處理序的最大背景工作執行緒 (Worker Thread) 個數。請參閱 maxWorkerThreads。 如需執行緒型別的詳細資訊,請參閱改善 ASP.NET 效能中的<執行緒說明>(英文)。 預設值為 1。 |
||||||||||||||||
password |
如果存在 (而且結合 userName),會使背景工作處理序以設定的 Microsoft Windows 識別執行。如需特殊名稱 System 和 Machine (不需要密碼) 的詳細資訊,以及在登錄中儲存加密背景工作處理序認證的詳細資訊,請參閱 userName。
預設值為 AutoGenerate。 |
||||||||||||||||
pingFrequency |
以標準處理序模型格式 (hr:min:sec) 指定 ISAPI 擴充功能 Ping 背景工作處理序的時間間隔,以確定背景工作處理序是否執行。如果在 pingTimeout 間隔內未執行,則會重新啟動背景工作處理序。 預設值為 Infinite。 |
||||||||||||||||
pingTimeout |
以標準處理序模型格式 (hr:min:sec) 指定於應回應的背景工作處理序未回應時,重新啟動的時間間隔。ISAPI 擴充功能在 pingFrequency 間隔內會 Ping 背景工作處理序。如果在 pingTimeout 間隔內背景工作處理序無回應,則會重新啟動該處理序。 預設值為 Infinite。 |
||||||||||||||||
requestLimit |
指定在 ASP.NET 自動啟動新背景工作處理序以取代目前處理序之前允許的要求個數。 預設值為 Infinite。 |
||||||||||||||||
requestQueueLimit |
指定在 ASP.NET 開始將「503 - 伺服器忙碌中」訊息傳回給新要求之前,在佇列中允許的要求數目。 預設值為 5000。 |
||||||||||||||||
responseDeadlockInterval |
如果符合下列條件,則以標準處理序模型格式 (hr:min:sec) 指定在重新啟動處理序之後的等待時間間隔:
預設為 "0:03:00" (3 分鐘)。 |
||||||||||||||||
responseRestartDeadlockInterval |
ASP.NET 已不再使用這個屬性,這裡只為相容性而提供。如果組態檔中已經有這個屬性,並不會造成組態錯誤。現在發生死結狀態時的所有回收處理,都由 responseDeadlockInterval 屬性控制。 預設為 "0:03:00" (3 分鐘)。 |
||||||||||||||||
restartQueueLimit |
指定當等待背景工作處理序在非標準終止後重新啟動時,能進入佇列之要求的最大數目。這項設定不會在清除關機或標準重新啟動的情況下套用。 預設值為 10。 |
||||||||||||||||
serverErrorMessageFile |
指定發生嚴重錯誤事件時,以檔案的內容取代預設的「伺服器無法使用」訊息。檔案位置可以是 Machine.config 檔的相對路徑,也可以是絕對路徑。如果這個屬性不存在,就會使用預設的「伺服器無法使用」訊息。 |
||||||||||||||||
shutdownTimeout |
指定允許背景工作處理序關閉的分鐘數。當超過逾時時,ASP.NET 便會關閉背景工作處理序。時間會以 hr:min:sec 的字串格示表示。 預設為 "0:00:05" (5 秒)。 |
||||||||||||||||
timeout |
指定在 ASP.NET 啟動新背景工作處理序以取代目前處理序之前等待的分鐘數。 預設值為 Infinite。 |
||||||||||||||||
userName |
指定 ASP.NET 在執行背景工作處理序時,使用的 Windows 識別將會不同於預設處理序識別的 Windows 識別。根據預設,這個屬性會設定為 Machine,而且處理序會在安裝 ASP.NET 時自動建立的 ASPNET 使用者帳戶下執行。ASPNET 帳戶的密碼是在安裝時以密碼編譯的方式產生。如果在這個屬性和 password 屬性中具有有效的認證,便會以指定的帳戶來執行處理序。userName 的另一個值是 System (密碼為 AutoGenerate),會以系統管理員帳戶執行處理序,並會允許在處理序下執行的所有 ASP.NET 使用者程式碼都擁有完整的系統管理員權限。如需在做為網域控制站的伺服器上使用 ASP.NET 的詳細資訊,請參閱本主題中稍後的<備註>一節。
預設值為 "machine"。 |
||||||||||||||||
webGarden |
控制搭配 cpuMask 屬性使用時的 CPU 相似性 (多重處理器 Web 伺服器稱為 Web 處理序區 (Web Garden))。 webGarden 屬性可以是下列其中一個值。
預設值為 False。 |
子項目
無。
父項目
項目 |
描述 |
---|---|
system.web |
指定 ASP.NET 組態區段的根項目 (Root Element),並包含會設定 ASP.NET Web 應用程式及控制這些應用程式之行為的組態項目。 |
備註
Managed 程式碼組態系統不會讀取 processModel 組態設定。而是由 aspnet_isapi.dll unmanaged DLL 直接讀取 processModel 組態設定。重新啟動 IIS 背景工作處理序之後才會套用這個區段的變更。
ASP.NET 以原生模式在 IIS 第 6 版下執行時,會使用 IIS 6 處理序模型,並會忽略 processModel 區段中的某些屬性。不過,下列屬性依然都會套用:
autoConfig
maxIoThreads
maxWorkerThreads
minIoThreads
minWorkerThreads
requestQueueLimit
responseDeadlockInterval
若要設定 IIS 6.0 的處理序識別、循環或其他的處理序模型值,請使用網際網路服務管理員使用者介面設定應用程式的 IIS 背景工作處理序。
注意事項: |
---|
當您將 IIS 6.0 設定為以 IIS 5.0 隔離模式執行 ASP.NET 時,將無法使用 ASP.NET 2.0。 |
時間值會以「小時:分鐘:秒數」的格式表示。如果提供沒有冒號的單一數字,該值就會被假設為分鐘,因此 timeout="4" 會等於 timeout="00:04:00"。
如果 ASP.NET 應用程式導致 ASP.NET 背景工作處理序 (在 Windows 2000 和 Windows XP Professional 上為 aspnet_wp.exe,在 Windows Server 2003 上則為 w3wp.exe) 重新啟動,而且錯誤訊息表示重新啟動可能由死結狀態造成,您就應該增加 responseDeadlockInterval 屬性。
網域控制站和本機 ASPNET 帳戶
如果您在網域控制站上安裝 .NET Framework 1.1 版,安裝作業便不會建立本機 ASPNET 帳戶。如下所示,ASP.NET 應用程式會在其他的識別下執行:
在執行 Windows 2000 Server 的網域控制站上,ASP.NET 應用程式會在 IWAM_machinename 識別下執行。
在執行 Windows Server 2003 的網域控制站上,ASP.NET 應用程式會在 NETWORK SERVICE 識別下執行 (不論是否為 IIS 隔離模式)。
某些情況下,在網域控制站上執行 ASP.NET 將需要您採取額外的步驟,以確保安裝工作能夠正確進行。如需在網域控制站上執行 .NET Framework 1.1 版的詳細資訊,請移至知識庫 (KB) 搜尋網頁 並參閱文件 Q824308<IWAM 帳戶在安裝有 SP 4 的 Windows 2000 網域控制站未授與模擬權限為 ASP . NET 1.1>。如需在網域控制站上執行 .NET Framework 1.0 版的詳細資訊,請移至知識庫 (KB) 搜尋網頁並參閱文件 Q315158<ASP.NET 無法使用網域控制站上的預設 ASPNET 帳戶>。
在登錄中儲存使用者名稱和密碼
若要加密使用者名稱和密碼,並將其儲存在登錄中,請依照下列範例所示設定 userName 和 password 屬性。
userName="registry:HKLM\Software\AspNetProcess,Name"
password="registry:HKLM\Software\AspNetProcess,Pwd"
在關鍵字 registry 之後及逗號 (,) 之前的字串部分,表示 ASP.NET 所開啟的登錄機碼名稱。逗號 (,) 之後的部分包含 ASP.NET 將會從中讀取認證的單一字串值。逗號 (,) 是必要的,而且認證必須儲存在 HKLM 登錄區中。如果組態格式不正確,ASP.NET 將不會啟動背景工作處理序,並會遵循目前帳戶建立失敗的程式碼路徑。
認證必須為 REG_BINARY 格式,並包含針對 Windows API 函式 CryptProtectData 呼叫的輸出。您可以使用 Aspnet_setreg.exe 建立加密的認證,並將這些認證儲存在登錄中。Aspnet_setreg.exe 會使用 CryptProtectData 完成加密。若要下載 Aspnet_setreg.exe,以及 Microsoft Visual C++ 原始程式碼和文件,請移至 ASP.NET 網站,並搜尋 "aspnet_setreg"。
您應該設定儲存加密認證金鑰的存取權限,使存取權僅供系統管理員 (Administrator) 和系統 (SYSTEM) 使用。由於金鑰是由執行為 SYSTEM 的 ASP.NET 處理序所讀取,因此請設定下列權限:
Administrators:F
SYSTEM:F
CREATOR OWNER:F
ProcessAccount: R
如此就能以下列方式協助保護資料:
ACL 權限需要存取資料的識別為 Administrator。
攻擊者必須在伺服器 (CryptUnprotectData) 中執行程式碼,才能復原帳戶認證。
預設組態
下列預設 processModel 項目不會明確地設定在 Machine.config 檔案或根 Web.config 檔案中。然而,應用程式傳回的是預設組態。
<processModel
enable="true"
timeout="Infinite"
idleTimeout="Infinite"
shutdownTimeout="00:00:05"
requestLimit="Infinite"
requestQueueLimit="5000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="00:00:05"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseDeadlockInterval="00:03:00"
responseRestartDeadlockInterval="00:03:00"
autoConfig="true"
maxWorkerThreads="20"
maxIoThreads="20"
minWorkerThreads="1"
minIoThreads="1"
serverErrorMessageFile=""
pingFrequency="Infinite"
pingTimeout="Infinite"
asyncOption="20"
maxAppDomains="2000"
/>
在 .NET Framework 1.0 和 1.1 版中,下列預設 processModel 項目是設定在 Machine.config 檔案中。
<processModel
enable="true"
timeout="Infinite"
idleTimeout="Infinite"
shutdownTimeout="0:00:05"
requestLimit="Infinite"
requestQueueLimit="5000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="0:00:05"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseRestartDeadlockInterval="00:09:00"
responseDeadlockInterval="00:03:00"
<!-- In the .NET Framework version 1.1, the next two attributes are
set to 20. -->
maxWorkerThreads="25"
maxIoThreads="25"
/>
項目資訊
組態區段處理常式 |
|
組態成員 |
|
可設定的位置 |
Machine.config |
需求 |
Microsoft Internet Information Services (IIS) 5.0、5.1 或 6.0 版 .NET Framework 1.0、1.1 或 2.0 版 Microsoft Visual Studio 2003 或 Visual Studio 2005 |
請參閱
工作
概念
參考
system.web 項目 (ASP.NET 設定結構描述)