| 代碼 | 訊息 | 核心原因 |
| 500.19 | 配置檔案讀取失敗,權限不足 | web.config / applicationHost.config 權限問題 |
| 401.3 | ACL 或加密設定導致無權存取 | 目錄/檔案 NTFS 權限缺失 |
核心修復:添加 Authenticated Users 讀取權限
- 右鍵網站根目錄 →「內容」→「安全性」分頁
- 「編輯」→「新增」
- 輸入
Authenticated Users →「檢查名稱」→ 確定
- 權限勾選「讀取和執行」、「列出資料夾內容」、「讀取」
- 確定套用
關鍵點:許多教程建議加 IIS_IUSRS,但實測 Authenticated Users 更有效,因為它涵蓋所有經驗證的使用者 (含 IUSR、Application Pool Identity)。
完整權限檢查清單
1. IIS 認證設定
- 網站 →「驗證」→ 啟用「匿名驗證」
- 匿名驗證 →「編輯」→ 選擇「應用程式池身分識別」或指定
IUSR
- 若用 IUSR:確認密碼同步 (「編輯」→ 重新輸入密碼)
2. 使用者帳號狀態
# 檢查 IUSR / IWAM 是否停用
lusrmgr.msc → 使用者 → 找到 IUSR_機器名、IWAM_機器名
# 若有紅叉 → 右鍵「內容」→ 取消勾選「帳戶已停用」
3. 本地安全性原則
secpol.msc → 本地原則 → 使用者權利指派 → 「從網路存取此電腦」
# 確認包含:IUSR、IIS_IUSRS、Authenticated Users、Users
4. 應用程式池身分識別 (現代最佳實踐)
- 應用程式池 →「進階設定」→「處理序模型」→「身分識別」
- 選擇 ApplicationPoolIdentity (虛擬帳號,無需管理密碼)
- 對應安全性識別碼:
IIS AppPool\
- 目錄權限直接加入此識別碼 (無法從 GUI 瀏覽,需手動輸入)
5. 目錄瀏覽與預設文件
- 「預設文件」→ 確認包含
index.html, index.asp, index.php, default.aspx
- 「目錄瀏覽」→ 依需求啟用/停用
6. COM+ 元件服務 (傳統 ASP 必檢)
comexp.msc → 元件服務 → 電腦 → 我的電腦 → COM+ 應用程式
# IIS Out-Of-Process Pooled Applications → 內容 → 身分識別
# 指定:IWAM_機器名 + 正確密碼
# IIS In-Process Applications / IIS Utilities → 安全性 → 取消「啟用驗證」
127.0.0.1 本機存取也要密碼?
同樣套用上述權限修復。重點檢查:
- 繫結 IP:「全部未指派」或特定 IP
- 埠號:80 (避免非標準埠導致瀏覽器行為異常)
- 防火牆:允許入站 80/443
避坑提醒
- 不要給
Everyone 完全控制 (安全風險)
- 修改權限後 IISRESET 或重啟應用程式池生效
- 網站目錄若在加密磁碟 (EFS/BitLocker),確保應用程式池身分識別有解密權限
- Windows Server 2012 R2+ 建議直接用 ApplicationPoolIdentity,簡化權限管理