Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows Server 2003 IIS 6.0 ASP 開發必知:啟用父路徑支援解決「不允許的父路徑」錯誤

編輯:Windows Server 教學

錯誤現象

在 Windows Server 2003 IIS 6.0 環境開發 ASP 應用程式時,使用相對父路徑語法會拋出錯誤:


錯誤類型:
Active Server Pages, ASP 0131 (0x80004005)
不允許的父路徑
/your_vdir/include/header.asp, line 5

常見觸發代碼:

  • `Server.MapPath("../")`
  • ``
  • `Response.Redirect("../login.asp")`

原因分析

IIS 6.0 預設停用父路徑(Enable Parent Paths = False),出於安全考量防止目錄遍歷攻擊。但此設定會導致舊版 ASP 程式碼遷移失效,開發效率大幅下降。

解決方法:啟用父路徑支援

  1. 開啟 IIS 管理員 (`inetmgr`)
  2. 展開網站 → 右鍵目標虛擬目錄/應用程式 → [內容]
  3. [虛擬目錄] 索引標籤 → [設定] 按鈕
  4. [選項] 索引標籤 → 勾選 [啟用父路徑]
  5. [確定] 關閉所有對話框

安全性權衡與替代方案

方案優點缺點建議場景
啟用父路徑零代碼修改、相容舊專案理論上增加目錄遍歷風險內部系統、受控環境、舊專案遷移
改用虛擬路徑 `#include virtual="/inc/config.asp"`安全、標準寫法、不依賴父路徑需修改所有 include 語句新專案開發、安全要求高環境
使用 `Server.MapPath("/")` 取得根路徑再拼接明確可控、避免相對路徑歧義代碼較冗長需動態運算路徑場景
設定應用程式變數 `Application("RootPath")`集中管理、效能佳需在 Global.asa 初始化大型專案、多虛擬目錄部署

進階:應用程式池層級設定

若在網站層級啟用父路徑仍無效,檢查應用程式池設定:

  1. IIS 管理員 → [應用程式池] → 目標池右鍵 → [內容]
  2. [效能] / [健康偵測] 索引標籤確認無異常限制
  3. 重啟應用程式池或執行 `iisreset` 生效

結語

Windows Server 2003 IIS 6.0 預設停用父路徑是安全預設原則的體現,但對 ASP 遷移造成阻礙。虛擬目錄屬性 → 設定 → 選項 → 啟用父路徑 可快速解決。新專案建議採用虛擬路徑 (`/inc/...`) 或應用程式根路徑變數,從架構層面消除相對父路徑依賴,兼顧安全與可維護性。

Copyright © Windows教程網 All Rights Reserved