【发布时间】:2009-06-15 22:55:03
【问题描述】:
我相信我已经设置了我们的 MVC 应用程序以正确使用 [HandleError]。这是我的控制器:
[HandleError]
public class SupportController : BaseController {
public ActionResult Toss() {
throw new Exception("uh oh");
}
// snip
}
我已经将web.config 中的customErrors 标签设置为“开启”:
<customErrors mode="On"></customErrors>
但是,我仍然在异常情况下获得黄屏死机。在我的 Toss() 操作中设置断点表明 HttpContext.IsCustomErrorEnabled is 设置为 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。可能有一些古怪的设置从那里遗留下来?
我可以在其他应用程序上使用它,所以我有点困惑。
【问题讨论】:
-
您的 error.aspx 页面是在 ~\Views\Support 还是 ~\Views\Shared 中?
-
~\Views\Shared - 甚至尝试过 [HandleError(View = "~/Views/Shared/Error.aspx")] (没用)