processModel 項目 (ASP.NET 設定結構描述)

設定 Microsoft Internet Information Services (IIS) Web 伺服器上的 ASP.NET 處理序模型設定。 processModel 區段只能在 Machine.config 檔內設定,並會影響在伺服器上執行的所有 ASP.NET 應用程式。

注意事項警告

processModel 項目的變更只有在重新啟動背景工作處理序後才會生效,而不是與其他組態項目一樣,在變更設定後立即生效。如需詳細資訊,請參閱這個主題中稍後的<備註>。

<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"
/>

屬性和項目

下列各節將說明屬性、子項目和父項目。

屬性

屬性

描述

autoConfig

指定是否自動進行下列設定,以根據電腦組態達到最佳效能:

這些值將會根據以下知識庫文件進行設定:https://support.microsoft.com/?id=821268

這個屬性不會影響 .NET Framework 用戶端應用程式,只會影響 ASP.NET 應用程式。

autoConfig 屬性可以是下列其中一個值。

詞彙定義
True 表示 ASP.NET 會自動設定以上清單中的屬性,以根據電腦組態達到最佳效能。
False 表示 ASP.NET 應該對以上清單中的屬性使用明確定義的值。

除非先前已有組態,否則 Machine.config 檔中的預設值為 True。

clientConnectedCheck

指定 ASP.NET 在檢查用戶端是否連線之前,將要求留在佇列中的時間。

預設為 "00:00:05" (5 秒)。

comAuthenticationLevel

指定 DCOM 安全性的驗證層級。

comAuthenticationLevel 屬性可以是下列其中一個值。

值描述
Call 指定 DCOM 在伺服器於每個遠端程序呼叫開始處收到要求時驗證用戶端的認證。
Connect 指定 DCOM 只在用戶端與伺服器建立連線時才驗證用戶端的認證。
Default 指定 DCOM 使用標準安全性交涉演算法決定驗證層級。
None 不指定驗證。
Pkt 指定 DCOM 驗證收到的所有資料都來自期望的用戶端。資料包傳輸永遠使用 Pkt 驗證。
PktIntegrity 指定 DCOM 驗證和確認用戶端及伺服器之間傳輸的資料都未遭到修改。
PktPrivacy 指定 DCOM 驗證所有先前的層級,並加密各遠端程序呼叫的引數值。

預設值為 Connect。

comImpersonationLevel

指定 COM 安全性的驗證層級。

comImpersonationLevel 屬性可以是下列其中一個值。

值描述
Anonymous 指定用戶端對伺服器為匿名的。伺服器可以模擬用戶端,不過模擬語彙基元不會含有任何資訊。Anonymous 不被 .NET Framework 1.1 版支援。
Default 指定 DCOM 使用標準安全性交涉演算法決定模擬層級。
Delegate 指定伺服器處理序在代表用戶端時,可以模擬用戶端的安全性內容。伺服器處理序也可以在代表用戶端時使用 Cloaking 對其他伺服器進行外送呼叫。伺服器可以在其他電腦上使用用戶端的安全性內容,像用戶端一樣地存取本機和遠端資源。當模擬為這個層級時,模擬 Token 可傳送通過許多電腦邊界。
Identify 指定伺服器可取得用戶端的識別 (Identity)。伺服器可以模擬用戶端以進行存取控制清單 (ACL) 檢查,不過不能當做用戶端來存取系統物件。
Impersonate 指定伺服器處理序在代表用戶端時,可以模擬用戶端的安全性內容。這個模擬層級可用以存取本機資源,例如檔案。當模擬為這個層級時,模擬 Token 只能傳送通過一個電腦邊界。

預設值為 Impersonate。

cpuMask

指定多重處理器的伺服器上執行 ASP.NET 處理序的合格處理器 (CPU)。 這個值指定位元模式,以表示執行 ASP.NET 執行緒的合格 CPU。 例如,cpuMask 十六進位值 0x0d 表示位元模式 1101年。 在具有四個 CPU 的電腦上,這表示可以在 CPU 0、2 和 3 排程 ASP.NET 處理序,但不能在 CPU 1 進行。 ASP.NET 會為每個合格的 CPU 啟動一個工作處理序。 如果 webGarden 屬性為 true,這個屬性便會將背景工作處理序限制在合格的 CPU 數目上。 背景工作處理序的最大數目便會等於 CPU 的數目。 如果 webGarden 為 false,便會忽略這個屬性,而且只會執行一個背景工作處理序。 這是預設行為。

預設值為 "0xffffffff"。

enable

指定是否啟用處理序模型。

enable 屬性可以是下列其中一個值。

值描述
True 指示啟用處理序模型。
False 指示停用處理序模型。

預設值為 true。

idleTimeout

以 hr:min:sec 字串格式指定於 ASP.NET 自動結束背景工作處理序後,不進行任何動作的週期。

預設值為 Infinite。

logLevel

指定要記錄至事件記錄中的事件型別。

logLevel 屬性可以是下列其中一個值。

值描述
All 指定記錄所有的處理序事件。
Errors 指定只記錄未預期的關機、記憶體限制關機和死結關機。
None 指定不記錄任何事件。

預設值為 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 的詳細資訊,請參閱本主題中稍後的<備註>一節。

注意事項注意事項
這個屬性和 password 屬性都會以純文字的形式儲存在組態檔中。儘管 Microsoft Internet Information Services (IIS) 不會回應使用者代理程式的要求而傳輸 .config 檔,依然有其他方式能夠讀取組態檔。例如,在伺服器的定義域中具有適當認證的已驗證使用者,即可讀取組態檔。為了安全性考量,processModel 區段支援在登錄中儲存加密的 userName 和 password 屬性。認證必須具有 REG_BINARY 的格式,並以 Windows 2000 和 Windows XP 資料保護 API (Windows XP Data Protection API,DPAPI) 加密功能加密。如需詳細資訊,請參閱本文件稍後提及的「在登錄中儲存使用者名稱和密碼」一節。

預設值為 "machine"。

webGarden

控制搭配 cpuMask 屬性使用時的 CPU 相似性 (多重處理器 Web 伺服器稱為 Web 處理序區 (Web Garden))。

webGarden 屬性可以是下列其中一個值。

值描述
True 表示 cpuMask 屬性可用以指定執行 ASP.NET 處理序的合格 CPU。
False 指示由 Windows 作業系統排定 CPU 使用量。會忽略 cpuMask 屬性,而且只會執行一個背景工作處理序。

預設值為 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 7 處理模型的資訊,請參閱應用程式集區的處理模型設定

若要設定 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"
        />

項目資訊

組態區段處理常式

ProcessModelSection

組態成員

ProcessModel

可設定的位置

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

請參閱

工作

HOW TO:使用位置設定來設定特定的目錄

HOW TO:鎖定 ASP.NET 組態設定

參考

system.web 項目 (ASP.NET 設定結構描述)

configuration 項目 (一般設定結構描述)

System.Configuration

System.Web.Configuration

ProcessModel

ProcessModelSection

概念

設定 ASP.NET 處理序識別

ASP.NET 組態檔階層架構和繼承

保護 ASP.NET 組態

ASP.NET 組態案例

其他資源

一般組態設定 (ASP.NET)

改善 ASP.NET 效能

ASP.NET 組態設定

ASP.NET 網站管理

ASP.NET 組態檔

ASP.NET 組態 API