MVC Global错误处理:Application_Error未触发

时间:2009-04-05 17:25:07

标签: c# asp.net-mvc error-handling

我正在尝试在我的MVC应用程序中实现全局错误处理。

我的Application_Error内部有一些逻辑重定向到ErrorController,但它无效。

我在Application_Error的{​​{1}}方法中有一个断点。

当我强制执行异常时,没有点击断点。有什么想法吗?

3 个答案:

答案 0 :(得分:10)

您可以尝试这种方法进行测试:

protected void Application_Error(object sender, EventArgs e)
{
    var error = Server.GetLastError();
    Server.ClearError();
    Response.ContentType = "text/plain";
    Response.Write(error ?? (object) "unknown");
    Response.End();
}

的Web.config

<customErrors mode="Off" />

答案 1 :(得分:2)

我认为更好的方法是使用HandleErrorAttribute来装饰你的控制器(也许是一个基本控制器)。通过扩展此属性并修改它以满足您的需要,例如通过更改渲染的视图,这将使您可以选择在具有不同错误的不同控制器中执行日志记录或处理错误。使用此属性使用MVC中的标准过滤器处理,并使用视图构建页面,而不是像使用Application_Error那样直接写入响应。

答案 2 :(得分:0)

我不能肯定地告诉你什么是错的,但是我可以想一些事情要检查......首先,VS打破异常吗?如果您在调试器中,这是我认为的默认值。如果它只是点击F5,直到你得到断点的代码。另外,您确定在到达Application_Error之前的任何地方都没有处理异常吗?

在web.config中检查另一件事 - CustomErrors模式,这设置为Off,对吗?