Asp.net-Mvc
ASP.NET MVC HandleError 不起作用(customErrors 設置為“開”)
我相信我已經設置了我們的 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 中的一個糟糕的設計(連同它的其餘部分),但是您可以通過不使用相同的母版頁來輕鬆解決這個問題(您甚至可以在繼承的地方進行母版頁繼承強類型母版頁,純粹從無類型的母版頁繼承圖層。
否則,這是錯誤視圖中發生的某種異常……(很可能)。