ASP.NET 進程預設以 ASPNET (IIS 5 隔離模式) 或 Network Service (IIS 6 處理序隔離模式) 身分執行,需對應用程式目錄、暫存目錄、系統組件目錄具備適當 NTFS 權限。Users 群組權限常被誤作為通用解法,實際應精準授予執行身分所需最小權限。
| # | 錯誤現象/訊息 | 根本原因 | 精準解決路徑與權限 |
|---|---|---|---|
| 1 | System.IO.DirectoryNotFoundException: 未找到路徑 "C:\" 的一部分 | 執行身分無 C:\ 根目錄讀取權限 | C:\ → 執行身分 (ASPNET/Network Service):讀取/執行、列出資料夾內容、讀取 |
| 2 | HTTP 401.3 / 401.1 - ACL 拒絕存取 | 網站目錄或匿名使用者帳號 (IUSR_*) 權限不足 | 1. 檢查 IIS → 網站內容 → 目錄安全性 → 匿名存取帳號密碼正確 2. 網站根目錄 → IUSR_* + 執行身分:讀取/執行、列出資料夾、讀取 |
| 3 | 瀏覽網站顯示亂碼 | 執行身分無 C:\Windows 讀取權限 (影響全域化/編碼組件載入) | C:\Windows → 執行身分:讀取/執行、列出資料夾、讀取 |
| 4 | CS0016: 未能寫入輸出檔案 ... Temporary ASP.NET Files ... 拒絕存取 | 動態編譯暫存目錄寫入權限不足 | C:\Windows\Temp、C:\Windows\Microsoft.NET\Framework\<版本>\Temporary ASP.NET Files → 執行身分:讀取/寫入、修改、列出資料夾 |
| 5 | 編譯器錯誤代碼 128 | 執行身分無 C:\Windows\System32 讀取權限 (載入系統組件失敗) | C:\Windows\System32 → 執行身分:讀取/執行、列出資料夾、讀取 |
| 6 | 執行時錯誤 - 自訂錯誤模式禁止遠端檢視詳細資訊 | 應用程式發生未處理例外,web.config <customErrors mode="RemoteOnly"> 隱藏細節 | 修改 web.config:<customErrors mode="Off" /> (開發/除錯)或 <customErrors mode="RemoteOnly" defaultRedirect="error.htm" /> (生產導向友善錯誤頁) |
| 7 | VS2005 內建伺服器編譯失敗,McAfee 阻擋 w3wp.exe 在 C:\Windows\Temp 建立 DLL | 防毒軟體「最大保護」規則阻擋系統暫存目錄建立可執行檔 | McAfee 主控台 → 存取保護規則 → 刪除/停用「防止在 Windows 資料夾中建立新的可執行檔」規則,或將 w3wp.exe、csc.exe、vbc.exe 加入例外清單 |
| 8 | ASP.login_aspx.GetTypeHashCode() 沒有找到適合的方法來重寫 等編譯錯誤 | 暫存編譯檔案損壞或類別/命名空間不一致 | 1. 刪除 Temporary ASP.NET Files 對應應用程式目錄2. 檢查 .aspx/.cs 檔案:類別名稱、命名空間、繼承關係 ( Inherits 屬性) 前後一致3. 重新建置專案 |
| 目錄 | 主體 | 權限 | 備註 |
|---|---|---|---|
| 網站根目錄 | IUSR_* (匿名)、執行身分 | 讀取/執行、列出資料夾、讀取 | 寫入需求 (上傳/快取) 另建子目錄單獨授權 |
C:\Windows\Temp | 執行身分 | 修改 (讀取/寫入/刪除/列出) | 動態編譯、XML 序列化暫存 |
C:\Windows\Microsoft.NET\Framework\<版本>\Temporary ASP.NET Files | 執行身分 | 修改 | 動態編譯輸出 |
C:\Windows | 執行身分 | 讀取/執行、列出資料夾、讀取 | 全域化、編碼、組態系統組件 |
C:\Windows\System32 | 執行身分 | 讀取/執行、列出資料夾、讀取 | 系統 DLL 載入 |
C:\ | 執行身分 | 讀取/執行、列出資料夾、讀取 | 根目錄遍歷 (罕見需求) |
w3wp.exe / aspnet_wp.exe、Result=ACCESS DENIED,精準定位拒絕存取的路徑與權限。fuslogvw 啟用記錄,診斷組件載入失敗。IIS_WPG 成員帳號),比 Network Service 更易審計與權限控制。%Windir%\Temp、Temporary ASP.NET Files、w3wp.exe、csc.exe、vbc.exe 加入掃描排除,避免即時掃描鎖定檔案導致編譯/執行失敗。ASP.NET 權限問題 90% 集中在「執行身分對目錄權限不足」與「防毒軟體誤攔截」。建立標準權限基準表、使用 ProcMon 精準定位、配置防毒白名單、善用應用程式集區身分識別隔離,可將疑難排解時間從小時縮減至分鐘。