許多開發者在使用 IIS 6.0 架設網站時,都會遇到各種配置問題。這些問題有的是從 IIS 5.0 時代就存在的舊患,也有不少是 IIS 6.0 新增安全機制導致的新問題。筆者整理了一下午的實測經驗,結合過往除錯心得,整理出這份完整指南,希望能幫助大家快速排除故障。
Server.MapPath() 錯誤 'ASP 0175: 80004005' 不允許的 Path 字符 /0709/dqyllhsub/news/OpenDatabase.asp,行 4 在 MapPath 的 Path 參數中不允許字符 '..'。
許多網頁程式會使用 ../ 這類相對路徑語法(即回到上層目錄,也就是父路徑)。出於安全考量,IIS 6.0 預設關閉此選項。
HTTP 錯誤 404 - 文件或目錄未找到。
IIS 6.0 新增「Web 服務擴展」機制,可對 ASP、ASP.NET、CGI、ISAPI 等程式進行允許或禁止控制。預設情況下 ASP 等擴展均為禁止狀態。
在 IIS 管理器中選中「Web 服務擴展」,找到「Active Server Pages」並點擊「允許」。同理,ASP.NET、CGI 等亦需在此啟用。
HTTP 錯誤 401.2 - 未經授權:訪問由於服務器配置被拒絕。
IUSR_機器名 帳戶,授予本地登入權限,為大多數網站預設方式根據需求配置認證方式(通常選擇匿名驗證)。路徑:IIS 屬性 → 目錄安全性 → 身份驗證和訪問控制 → 編輯。
HTTP 錯誤 403.6 - 禁止訪問:客戶端的 IP 地址被拒絕。
進入 IIS 屬性 → 目錄安全性 → IP 地址和域名限制。可選擇「授予訪問」並添加拒絕的 IP,或選擇「拒絕訪問」並添加允許的 IP 白名單。
HTTP 錯誤 401.1 - 未經授權:訪問由於憑據無效被拒絕。
控制台 → 管理工具 → 計算機管理 → 本地用戶和組 → 啟用 IUSR_機器名 帳號。
HTTP 錯誤 401.3 - 未經授權:訪問由於 ACL 對所請求資源的設置被拒絕。
右鍵網站目錄 → 屬性 → 安全性標籤,給 Users 群組至少「讀取」權限。
HTTP 500 - 內部服務器錯誤
IWAM_機器名 為 IIS 安裝時自動建立的內置帳號,密碼由 Active Directory、IIS Metabase、COM+ 三方共同維護,同步機制偶爾失效導致密碼不一致。
c:\Inetpub\AdminScripts\adsutil SET w3svc/WAMUserPass 密碼cscript c:\inetpub\adminscripts\synciwam.vbs -vHTTP 錯誤 404 - 文件或目錄未找到。
IIS 6.0 移除部分 MIME 類型支援(如 .iso),導致客戶端下載失敗。
IIS 屬性 → HTTP 標頭 → MIME 類型 → 新增:副檔名 .ISO,MIME 類型 application/octet-stream。
防火牆阻擋、ODBC 配置錯誤、Web 伺服器效能限制、執行緒限制等亦可能導致無法訪問,請根據實際情況排查。