Asp.net

自定義 ASP.NET MVC 404 錯誤頁面的路由

  • February 16, 2009

當有人在 ASP.NET MVC 中鍵入的 URL 未呼叫有效操作或控制器時,我試圖創建一個自定義 HTTP 404 錯誤頁面,而不是顯示通用的“未找到資源”ASP.NET 錯誤。

我不想使用 web.config 來處理這個問題。

我可以做任何路由魔術來擷取任何無效的 URL 嗎?

**更新:**我嘗試了給出的答案,但是我仍然收到醜陋的“找不到資源”消息。

**另一個更新:**好的,顯然 RC1 發生了一些變化。我什至嘗試在 an 上專門擷取 404 HttpException,但它仍然只是給我“找不到資源”頁面。

我什至使用了 MvcContrib 的資源功能,但什麼也沒用——同樣的問題。有任何想法嗎?

只需在路線表的末尾添加擷取所有路線並顯示您想要的任何頁面。

請參閱:我如何製作一條擷取所有路由來處理 ASP.NET MVC 的“404 page not found”查詢?

我嘗試在生產伺服器上啟用自定義錯誤 3 小時,似乎我找到了最終解決方案,如何在沒有任何路由的 ASP.NET MVC 中執行此操作。

要在 ASP.NET MVC 應用程序中啟用自定義錯誤,我們需要(IIS 7+):

  1. 在 web configsystem.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;
  1. 在 web config 部分下設置另一個魔術設置system.webServer
<httpErrors errorMode="Detailed" />

這是我發現的最後一件事,之後我可以在生產伺服器上看到自定義錯誤。

引用自:https://stackoverflow.com/questions/553922