ASP.NET MVC HandleError无法正常工作(customErrors设置为"On")

swi*_*ams 14 asp.net-mvc handleerror

我相信我已经设置了我们的MVC应用程序以便[HandleError]正确使用.这是我的控制器:

[HandleError]
public class SupportController : BaseController {

    public ActionResult Toss() {
        throw new Exception("uh oh");
    }
    // snip
}
Run Code Online (Sandbox Code Playgroud)

已将我的customErrors标记设置web.config为"开启":

<customErrors mode="On"></customErrors>
Run Code Online (Sandbox Code Playgroud)

但是,我仍然在例外情况下获得黄色死亡屏幕.设置在我的断点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>
Run Code Online (Sandbox Code Playgroud)

可能有一点不同的是,这个应用程序是在MVC Beta是最新版本时创建的,并且在它们发布时升级到RC然后升级到RTM.可能有一些怪异的设置从那里遗留下来?

我可以在其他应用程序上工作,所以我有点沮丧.

mea*_*ode 19

如果在处理错误页面时出现问题,则会发生这种情况..如果您调试应用程序,在初始异常之后,您将遇到另一个问题(错误页面中的异常)..我发生了这种情况并且是我的原因是因为我有一个强类型的母版页,错误页面使用这个母版页,并且因为母版页与实际页面共享相同的模型,所以母版页获得了HandlerErrorInfo模型,而不是我期望的类型模型.

我个人认为这是asp.net mvc中的一个糟糕的设计(以及其余部分),但是你可以通过不使用相同的母版页来轻松解决这个问题(你甚至可以在你继承的地方继续使用母版页继承)强类型母版页,纯粹从无类型的图层继承图层.

否则,这是在错误视图中发生的某种异常..(最有可能).