Asp.net
自定義 ASP.NET MVC 404 錯誤頁面的路由
當有人在 ASP.NET MVC 中鍵入的 URL 未呼叫有效操作或控制器時,我試圖創建一個自定義 HTTP 404 錯誤頁面,而不是顯示通用的“未找到資源”ASP.NET 錯誤。
我不想使用 web.config 來處理這個問題。
我可以做任何路由魔術來擷取任何無效的 URL 嗎?
**更新:**我嘗試了給出的答案,但是我仍然收到醜陋的“找不到資源”消息。
**另一個更新:**好的,顯然 RC1 發生了一些變化。我什至嘗試在 an 上專門擷取 404
HttpException,但它仍然只是給我“找不到資源”頁面。我什至使用了 MvcContrib 的資源功能,但什麼也沒用——同樣的問題。有任何想法嗎?
只需在路線表的末尾添加擷取所有路線並顯示您想要的任何頁面。
我嘗試在生產伺服器上啟用自定義錯誤 3 小時,似乎我找到了最終解決方案,如何在沒有任何路由的 ASP.NET MVC 中執行此操作。
要在 ASP.NET MVC 應用程序中啟用自定義錯誤,我們需要(IIS 7+):
- 在 web config
system.web部分下配置自定義頁面:<customErrors mode="RemoteOnly" defaultRedirect="~/error"> <error statusCode="404" redirect="~/error/Error404" /> <error statusCode="500" redirect="~/error" /> </customErrors>
RemoteOnly意味著在本地網路上你會看到真正的錯誤(在開發過程中非常有用)。我們還可以為任何錯誤程式碼重寫錯誤頁面。 2. 設置魔術響應參數和響應狀態碼(在錯誤處理模組或錯誤句柄屬性中)HttpContext.Current.Response.StatusCode = 500; HttpContext.Current.Response.TrySkipIisCustomErrors = true;
- 在 web config 部分下設置另一個魔術設置
system.webServer:<httpErrors errorMode="Detailed" />這是我發現的最後一件事,之後我可以在生產伺服器上看到自定義錯誤。