Asp.net-Mvc

如何為 HandleErrorInfo 模型提供對象?

  • June 14, 2016

我正在編寫一個 ASP.NET MVC 應用程序,但遇到了以下問題。我想使用有關錯誤的詳細資訊(例如錯誤消息或導致錯誤的控制器)製作自定義錯誤頁面,但我無法在視圖上為模型提供 HandleErrorInfo 對象。

起初我配置了 Web.config 文件來處理自定義錯誤:

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

然後我創建了錯誤控制器來管理錯誤視圖:

public class ErrorController : Controller
{
   public ActionResult Index()
   {
       return View("Error");
   }

   public ViewResult NotFound()
   {
       Response.StatusCode = 404;
       return View("NotFound");
   }
}

在視圖上我添加了模型類型:

@model System.Web.Mvc.HandleErrorInfo

但是模型每次都是空的,我不知道如何將帶有錯誤詳細資訊的正確對像傳遞給視圖以及應該在哪裡創建該對象。你能幫助我嗎?甚至可以這樣做嗎?

所以你在這里處理兩個不同的“層”。<customErrors>是主要 ASP.NET 框架的一部分。然後HandleError是 MVC 框架的一部分。當您使用<customErrors>ASP.NET 不知道如何將異常資訊傳遞到視圖時,它只會將您載入/重定向到錯誤頁面。

為了使視圖工作,您需要將所有內容都保留在 MVC 生態系統中。因此,您需要使用HandleErrorAttribute, 或變體 . 您可以在屬性的原始碼中看到它嘗試檢測何時發生未處理的異常,如果啟用了自定義錯誤,則使用其中包含異常資訊ViewResult的實例啟動一個新的。HandleErrorInfo

需要注意的是,在預設的 MVC 項目中,HandleErrorAttribute作為文件內部的全域過濾器應用App_Start/FilterConfig.cs

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