
MVC 專案預設參考 System.Web.Mvc 為 Copy Local = False,建置時不會複製至 Bin。部署至無安裝 MVC Runtime 的伺服器會失敗。
System.Web.Mvc → 「屬性」。

System.Web.Mvc.dll 即出現在 Bin 目錄。<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRoutingModule"/>
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</modules>
<handlers>
<add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc"
type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
</system.webServer>
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,副檔名 .*,取消勾選「檢查檔案是否存在」。UrlRewriter / Helicon Ape 等 URL 重寫模組模擬無副檔名路由。| 現象 | 可能原因 | 解決方向 |
|---|---|---|
| 404 Not Found | 路由模組未註冊 / 萬用字元對應缺失 | 檢查 system.webServer/modules / IIS6 萬用字元對應 |
| 500 Internal Server Error | Bin 缺少 System.Web.Mvc.dll / 連線字串錯誤 / 權限不足 | 檢查 Bin、Event Viewer、AppPool 身分 |
| 靜態檔案 (CSS/JS/圖片) 404 | 路由攔截靜態檔案 | RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 加上 IgnoreRoute("Content/{*pathInfo}") 等 |
| 驗證/授權失效 | web.config authentication/authorization 區段與 IIS 設定衝突 | 確認 IIS 驗證模式(匿名/Windows/表單)與 web.config 一致 |
核心口訣:Bin 必須有 System.Web.Mvc.dll、路由模組必須註冊、靜態檔案必須排除路由。做對這三點,MVC 2.0 在 IIS 6/7 部署成功率 99%。