手動部署 ASP.NET MVC 專案到測試台,仗著自己對 MVC 的了解,沒用 Visual Studio Publish 功能也不是整個專案全搬,而是靠肉眼人腦決定搬哪些檔案。COPY 好檔案設好 IIS,預期該連上 /Home/Index 首頁卻冒出 HTTP 403.14。
這問題以前遇過,起因 Windows 2008 SP2 (非 Windows 2008 R2)的 IIS 7 不支援無副檔名路由,需使用 <modules runAllManagedModulesForAllRequests="true" /> 繞道或安裝 Hotfix。但這回主機是 Windows 2008 R2 IIS 7.5(畫面有 IIS 版號為證),不應有此問題。另一個可能是漏註冊 ASP.NET(需重跑aspnet_regiis),但同機器的其他 ASP.NET MVC 4 跑得好好的,當場排除嫌疑,無保請回。會是路由沒設好?不對,在開發機執行是正常的。
經過一番偵查,猛然想起:我漏了 Global.asax…
路由設定在 MvcApplication.Application_Start(),程式碼已隨 Global.asax.cs 編譯進 DLL,但網站少了 Global.asax 檔案,Application_Start() 事件就不會被觸發,烏龍事件再添一筆。