Asp.net-Mvc

ASP.NET MVC HandleError 不起作用(customErrors 設置為“開”)

  • January 8, 2015

我相信我已經設置了我們的 MVC 應用程序以[HandleError]正確使用。這是我的控制器:

[HandleError]
public class SupportController : BaseController {

   public ActionResult Toss() {
       throw new Exception("uh oh");
   }
   // snip
}

已將customErrors標籤設置web.config為“開”:

<customErrors mode="On"></customErrors>

但是,我仍然在異常情況下獲得黃屏當機。在我的操作中設置斷點Toss()表明HttpContext.IsCustomErrorEnabled 設置為 true。

我們沒有對 View Engine 做任何事情,BaseController也沒有弄亂任何東西(其他不擴展它的控制器也有同樣的問題)。

我在 Windows XP 上開發,當應用程序部署到伺服器 2003 框(IIS 6)時遇到同樣的問題。

我認為頁面上沒有異常error.aspx

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>

<asp:Content ID="errorContent" ContentPlaceHolderID="MainContent" runat="server">
   <h2>
       Sorry, an error occurred while processing your request.
   </h2>
</asp:Content>

可能不同的是,這個應用程序是在 MVC Beta 是最新版本時創建的,並在發佈時升級到 RC 和 RTM。可能有一些古怪的設置是從那裡遺留下來的?

我可以在其他應用程序上使用它,所以我有點困惑。

如果處理錯誤頁面時出現問題,這往往會發生..如果您調試應用程序,在初始異常之後您將遇到另一個問題(錯誤頁面中的異常)..我發生了這種情況以及我的原因是因為我有一個強類型的母版頁,錯誤頁面正在使用這個母版頁,並且因為母版頁與實際頁面共享相同的模型,所以母版頁獲得的是 HandlerErrorInfo 模型,而不是我預期的類型化模型。

就我個人而言,我認為這是 asp.net mvc 中的一個糟糕的設計(連同它的其餘部分),但是您可以通過不使用相同的母版頁來輕鬆解決這個問題(您甚至可以在繼承的地方進行母版頁繼承強類型母版頁,純粹從無類型的母版頁繼承圖層。

否則,這是錯誤視圖中發生的某種異常……(很可能)。

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