在 Windows Server 2003 IIS 6.0 環境開發 ASP 應用程式時,使用相對父路徑語法會拋出錯誤:
錯誤類型:
Active Server Pages, ASP 0131 (0x80004005)
不允許的父路徑
/your_vdir/include/header.asp, line 5
常見觸發代碼:
IIS 6.0 預設停用父路徑(Enable Parent Paths = False),出於安全考量防止目錄遍歷攻擊。但此設定會導致舊版 ASP 程式碼遷移失效,開發效率大幅下降。
| 方案 | 優點 | 缺點 | 建議場景 |
|---|---|---|---|
| 啟用父路徑 | 零代碼修改、相容舊專案 | 理論上增加目錄遍歷風險 | 內部系統、受控環境、舊專案遷移 |
| 改用虛擬路徑 `#include virtual="/inc/config.asp"` | 安全、標準寫法、不依賴父路徑 | 需修改所有 include 語句 | 新專案開發、安全要求高環境 |
| 使用 `Server.MapPath("/")` 取得根路徑再拼接 | 明確可控、避免相對路徑歧義 | 代碼較冗長 | 需動態運算路徑場景 |
| 設定應用程式變數 `Application("RootPath")` | 集中管理、效能佳 | 需在 Global.asa 初始化 | 大型專案、多虛擬目錄部署 |
若在網站層級啟用父路徑仍無效,檢查應用程式池設定:
Windows Server 2003 IIS 6.0 預設停用父路徑是安全預設原則的體現,但對 ASP 遷移造成阻礙。虛擬目錄屬性 → 設定 → 選項 → 啟用父路徑 可快速解決。新專案建議採用虛擬路徑 (`/inc/...`) 或應用程式根路徑變數,從架構層面消除相對父路徑依賴,兼顧安全與可維護性。
Windows Server 2003 部署軟體技術:RIS 遠端安裝服務與 Windows Installer (MSI) 群組原則發佈
Windows Server 2008 Core 修改桌面解析度完整指令教學
Windows Server 2003 校園 Web 服務器常見問題與應用程式池實戰
Windows 2000 SNMP 查詢工具 Snmputilg.exe 完整操作指南
Windows 2000 開機優化三大絕招:Msconfig 移植、Boot.ini 調校、關機選項精簡
Active Directory 容錯機制:確保網域控制器高可用性