常見症狀
- 安裝 IIS 後,`https://localhost` 顯示 **404 / 403 / 500 / 空白頁** 或下載 `.asp` 檔案而非執行。
- HTML 靜態頁正常,ASP 動態頁失敗。
- Ghost/精簡版 Windows 缺少 IIS 安裝元件入口。
階段一:確保 IIS 核心元件完整安裝
情況 A:控制台缺少「新增/移除 Windows 元件」→ IIS 選項
Ghost 系統常移除 `sysoc.inf` 中的 IIS 區塊。修復:
- 下載對應版本 IIS 安裝檔 (如 `iis5.1` for XP, `iis7` for Vista/7/2008, `iis8` for 8/2012)。解壓至 `D:\iis`。
- 編輯 `C:\Windows\inf\sysoc.inf`,在 `[Components]` 區段加入:
`iis=iis2.dll,OcEntry,iis2.inf,,7` (XP/2003)
或直接用 DISM (Vista+):
`dism /online /enable-feature /featurename:IIS-WebServerRole /all`
- 命令提示字元 (管理員) 執行:
`expand D:\iis\iis.dl_ C:\Windows\System32\Setup\iis2.dll`
`expand D:\iis\iis.in_ C:\Windows\inf\iis2.inf`
- 開啟「新增/移除程式」→「新增/移除 Windows 元件」,即可看到 IIS 核取方塊,勾選安裝。
情況 B:正常安裝但 ASP 未啟用
IIS 6.0+ 預設**停用 ASP** (安全預設)。啟用步驟:
- IIS 6 (Server 2003): Web 服務擴展 → `Active Server Pages` → 允許。
- IIS 7+ (Vista/7/2008+): 伺服器管理員 → 角色 → Web 伺服器 (IIS) → 新增角色服務 → 勾選 **ASP** (在「應用程式開發」下) → 安裝。
或 PowerShell:Install-WindowsFeature Web-ASP
階段二:修正 ASP 執行權限與身分識別 (500 內部錯誤核心)
1. COM+ 應用程式身分識別設定
- 執行 `comexp.msc` (元件服務)。
- 展開:元件服務 → 電腦 → 我的電腦 → COM+ 應用程式。
- 右鍵 IIS Out-Of-Process Pooled Applications → 內容 → **識別** 索引標籤。
- 選 **系統帳戶** (或指定 `IWAM_機器名` 並設定密碼) → 確定。
- 同樣處理 `IIS In-Process Applications`、`IIS Utilities`:安全性 → 取消勾選「啟用驗證」。
2. MSDTC (分散式交易協調器) 修復
若 COM+ 無法展開、報錯 `8004E00F`:
# 停止並重置 MSDTC
net stop msdtc
msdtc -uninstall
msdtc -install
net start msdtc
# 註冊相關 DLL
regsvr32 %windir%\system32\msdtcuiu.dll
regsvr32 %windir%\system32\mtxclu.dll
3. 匿名存取帳戶 (IUSR) 與 IWAM 密碼同步
- 電腦管理 → 本地使用者和群組 → 使用者:
`IUSR_機器名`、`IWAM_機器名` → 設定**相同密碼** (如 `P@ssw0rd`),取消「密碼永不過期」。
- IIS 網站屬性 → 目錄安全性 → 編輯 → 匿名存取 → 使用者名選 `IUSR_機器名`、密碼輸入上述密碼、**取消勾選「允許 IIS 控制密碼」**。
- 執行同步腳本:
`cscript %windir%\system32\inetsrv\adsutil.vbs SET W3SVC/WAMUserPass "P@ssw0rd"`
- 重新註冊 ASP 元件:
`regsvr32 %windir%\system32\inetsrv\asptxn.dll`
`rundll32 %windir%\system32\inetsrv\wamreg.dll, CreateIISPackage`
階段三:網站基本設定檢查清單
| 項目 | 正確設定 |
| 預設文件 | 包含 `default.asp`、`index.asp`、`default.htm`、`index.html` |
| 主目錄 → 本地路徑 | 指向實體網站根目錄 (如 `C:\Inetpub\wwwroot`) |
| 主目錄 → 執行權限 | 純指令碼 (Scripts only) |
| 主目錄 → 讀取/指令碼資源存取 | 勾選 讀取、指令碼資源存取 |
| 目錄安全性 → 匿名存取 | 啟用、帳戶 `IUSR_機器名`、取消「允許 IIS 控制密碼」 |
| 網站 → IP 位址 | 全部未指派 (或指定內網 IP) |
| 網站 → TCP 連接埠 | 80 (未被佔用,檢查 `netstat -ano | findstr :80`) |
階段四:註冊核心指令碼引擎 (終極大招)
regsvr32 %windir%\system32\vbscript.dll
regsvr32 %windir%\system32\jscript.dll
regsvr32 %windir%\system32\inetsrv\asp.dll
驗證測試頁
<%@ Language=VBScript %>
<%
Response.Write "ASP 執行正常! 時間: " & Now()
%>
存為 `test.asp` 放入網站根目錄,瀏覽 `https://localhost/test.asp`。
總結排查順序
- **元件完整** (Ghost 系統修補 sysoc.inf / DISM 安裝)
- **ASP 啟用** (Web 服務擴展 / 角色服務)
- **COM+ 身分識別** (系統帳戶 / IWAM 密碼同步)
- **MSDTC 正常** (重裝註冊)
- **匿名帳戶啟用、密碼同步、ADSUTIL 設定**
- **網站基本設定** (路徑、權限、預設文檔、埠口)
- **核心 DLL 重註冊** (vbscript, jscript, asp.dll)
按順序執行,99% 的 ASP 無法執行問題可解決。