前言
IIS 部署 ASP.NET 應用時遇到「無法提供頁面」、「404.17」或 ISAPI 篩選器錯誤,通常源於兩大核心原因。本文提供精準診斷與一鍵修復步驟。
一、 兩大核心成因
- .NET Framework 未安裝:作業系統缺少對應版本 .NET 執行環境。
- 安裝順序錯誤:先裝 .NET Framework,再裝 IIS → IIS 未向 .NET 註冊 ISAPI 對應,導致 ASP.NET 請求無法路由。
二、 修復方案
情況 1:缺少 .NET Framework
- 下載並安裝對應版本:.NET Framework 4.8(含 2.0/3.5 相容)、.NET 6/7/8(現代應用)。
- 安裝後自動註冊 ISAPI,無需額外操作。
情況 2:安裝順序導致 ISAPI 遺失(經典修復)
- 開啟「Internet Information Services (IIS) 管理員」。
- 左側樹選擇伺服器節點 → 右側「ISAPI 和 CGI 限制」。
- 確認列表中存在 ASP.NET v4.0(或 v2.0)且狀態為「允許」。
- 若缺失,點擊右側「新增」:
- ISAPI 路徑:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll(x86)或 Framework64(x64)
- 描述:ASP.NET v4.0
- 勾選「允許擴充執行」。
- 進一步確認「處理常式對應」:站點 → 「處理常式對應」 → 確認
*.aspx、*.asmx 等對應至 aspnet_isapi.dll(經典模式)或 aspnetcore.dll(Core)。
- 重新啟動 IIS:
iisreset 或管理介面重啟。
三、 現代化一鍵修復指令(推薦)
以管理員身分執行 PowerShell:
# .NET Framework 4.x 修復註冊
dism /online /enable-feature /featurename:IIS-ASPNET45 /all
# ASP.NET Core 執行環境(若為 Core 應用)
dotnet tool install -g dotnet-iis
dotnet iis register
四、 驗證步驟
- 建立測試頁
test.aspx:<% Response.Write("ASP.NET OK: " + DateTime.Now); %>
- 瀏覽器訪問
https://localhost/test.aspx,顯示時間即正常。
- 檢查應用程式集區:.NET CLR 版本設為「v4.0」(Framework)或「無受控碼」(Core)。
五、 常見坑點提醒
- 32/64 位元不匹配:應用程式集區「啟用 32 位元應用程式」需與 .NET 版本一致。
- Windows 功能未啟用:「開啟或關閉 Windows 功能」→ IIS → 「應用程式開發」→ 勾選「ASP.NET 4.x / ASP.NET Core」。
- 多版本共存:同一應用程式集區僅支援單一 CLR 版本,不同版本建立獨立集區。
結語
IIS + ASP.NET 核心在於「ISAPI 註冊完整」與「應用程式集區版本正確」。現代部署優先用 dism 或 dotnet iis 指令自動化修復,避免手動點點點遺漏步驟。