ASP.NET 4.0+ 引入 `
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config (64-bit)
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config (32-bit)
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet.config (2.0/3.5 64-bit)
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet.config (2.0/3.5 32-bit)
REM 為 DefaultAppPool 指定獨立配置
%windir%\System32\inetsrv\appcmd.exe set config -section:system.applicationHost/applicationPools
/[name='DefaultAppPool'].CLRConfigFile:"C:\Inetpub\AppPoolConfigs\DefaultAppPool_aspnet.config"
/commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools
/[name='{AppPoolName}'].CLRConfigFile:"{ConfigFilePath}"
/commit:apphost
注意:
- 需在 `%windir%\System32\inetsrv` 目錄下執行 `appcmd.exe`
- 路徑請使用絕對路徑,避免相對路徑解析問題
- 設定後**必須重啟應用程式池**才生效 (應用程式池啟動時才載入配置)
- 僅支援 **IIS 7.5+** 且 **整合式管線模式**
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<runtime>
<legacyUnhandledExceptionPolicy enabled="false" />
<legacyImpersonationPolicy enabled="true" />
<alwaysFlowImpersonationPolicy enabled="false" />
<SymbolReadingPolicy enabled="1" />
<shadowCopyVerifyByTimestamp enabled="true" />
</runtime>
<startup useLegacyV2RuntimeActivationPolicy="true" />
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" />
</system.web>
</configuration>
| 參數 | 預設值 | 建議值 | 說明 |
|---|---|---|---|
| maxConcurrentRequestsPerCPU | 5000 | 5000~10000 | 每 CPU 最大並發請求數,0 表示無限制 |
| maxConcurrentThreadsPerCPU | 0 | 0 (無限制) | 每 CPU 最大並發執行緒數,通常設 0 由 CLR 自動調度 |
| requestQueueLimit | 5000 | 5000~10000 | 要求佇列上限,超過回傳 503 Service Unavailable |
| 現象 | 原因 | 解決 |
|---|---|---|
| 設定後無效果 | 未重啟應用程式池 | 執行 `appcmd stop/start apppool` 或 IIS 管理員重啟 |
| 事件日誌報配置錯誤 | XML 格式錯誤/區段不存在 | 檢查 XML 結構,確保 ` |
| 權限拒絕 | 應用程式池身分無讀取權限 | icacls 授予 `IIS APPPOOL\{Name}` 讀取權限 |
| 經典模式不生效 | 僅支援整合式管線 | 應用程式池 → 進階設定 → 管線模式:整合式 |
透過 `CLRConfigFile` 實現應用程式池級別的 `aspnet.config` 隔離,是 ASP.NET 於 IIS 7.5+ 環境下進行精細效能調優的關鍵技術。核心流程:建立配置檔 → 設定權限 → appcmd 註冊 → 重啟應用程式池 → 驗證生效。建議依據業務負載特性 (高併發/長連線/計算密集) 建立不同配置範本,實現基礎設施即代碼化管理。