首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

解決 IIS 7 部署 ASP.NET「拒絕存取」無法寫入輸出檔案錯誤

     編輯:ASP.NET 基礎

錯誤現象

將 ASP.NET 應用程式部署至 IIS 7 時,瀏覽頁面拋出:

「未能寫入輸出檔案 — 拒絕存取」

這是典型的權限不足問題,編譯暫存目錄無法被 IIS 處理序身分寫入。

根本原因

ASP.NET 執行階段需在 C:\Windows\Temp 產生動態編譯的暫存組件。IIS 7 預設應用程式集區身分為 IIS_IUSRS 群組,若該群組缺乏 Temp 目錄的寫入權限,即觸發此錯誤。

解決步驟

  1. 開啟檔案總管,定位到 C:\Windows\Temp。
  2. 右鍵 →「內容」→「安全性」標籤 →「編輯」。
  3. 點選「新增」,輸入 IIS_IUSRS,按「檢查名稱」確認後確定。
  4. 在權限清單中勾選 完全控制(或至少:讀取、寫入、修改)。
  5. 點選「套用」→「確定」完成。

補充說明

  • ✅ 不需新增 NETWORK SERVICE:IIS 7+ 已棄用該身分作為預設集區身分,僅相容舊版應用程式集區時才需考慮。
  • 🔒 最小權限原則:若環境嚴格,可僅授與「列出資料夾/讀取資料」、「建立檔案/寫入資料」、「建立資料夾/附加資料」三項權限,避免完全控制過度開放。
  • 🔁 變更後無需重啟 IIS,權限即時生效;若仍報錯,請確認應用程式集區身分確實屬於 IIS_IUSRS 群組。

快速驗證腳本

// 在 .aspx 頁面測試寫入權限
protected void Page_Load(object sender, EventArgs e) {
    string testPath = @"C:\Windows\Temp\write_test.tmp";
    try {
        System.IO.File.WriteAllText(testPath, "ok");
        System.IO.File.Delete(testPath);
        Response.Write("Temp 目錄寫入權限正常");
    } catch (Exception ex) {
        Response.Write("權限不足:" + ex.Message);
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved