Asp.net-Mvc

ASP.NET MVC 自定義錯誤頁面(StatusCode 404 拋出 500)

  • July 4, 2020

我在 web.config 中設置了 customErrors

<customErrors mode="On" defaultRedirect="/Error/GeneralError">
   <error statusCode="404" redirect="/Error/NotFound"/>
</customErrors>

這在本地執行良好。404 會引發 404。在共享主機上,它會引發標準伺服器 404 頁面,除非我專門將 404 設置為指向 /Error/NotFound。沒關係。現在它將顯示自定義 404 頁面,但響應狀態程式碼為 200。所以如果我嘗試拋出 Response.StatusCode = 404; 在我的 ErrorController 中的 NotFound 操作中,如下所示:

public class ErrorController : Controller
{
   public ActionResult NotFound()
   {
       Response.StatusCode = 404;
       return View();
   }
}

伺服器拋出狀態程式碼 500 Internal Server Error 但我的 GeneralError 頁面沒有顯示,只是一個沒有源的空白頁面。

我嘗試了許多不同的組合,但似乎找不到如何讓它顯示我的自定義 404 頁面以及 404 響應。

有任何想法嗎?

我在這裡找到了一些有趣的資訊:http: //blog.angrypets.com/2008/03/responsetryskip.html

Response.TrySkipIisCustomErrors = true; 

在解決問題之後設置TrySkipIisCustomErrors為。true``Response.StatusCode = 404;

不要使用customErrors元素(除了轉向mode="On"本地測試)。相反,為您的每個Marco’s Better-Than-Unicorns MVC 404 AnswerApplication_EndRequest添加一個方法。MvcApplication

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