AppDomain.CurrentDomain.UnhandledException未在MVC中触发

时间:2013-12-24 07:38:11

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-5

我有一个MVC4项目的默认模板,以及我在Global.asax中对UnhandledException事件的订阅:

    [SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
    protected void Application_Start()
    {
        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
    }

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        Debugger.Break();
        // Some logging code here
    }

在我的HomeController Index操作中,我只写:

    throw new Exception("Test exception"):

使用此类订阅的控制台应用程序正常工作。但是在MVC项目处理程序调用永远不会发生。 MVC有什么问题?

1 个答案:

答案 0 :(得分:0)

未调用UnhandledException回调,因为当由MVC框架和AppDomain处理的操作引发异常时,它没有未处理的异常,因此它不能被卸载并且它可以处理下一个请求。

记录异常的最短路径:

protected void Application_Error(object sender, EventArgs args)
{
    Debugger.Break();
    Exception error = ((HttpApplication)sender).Context.Server.GetLastError();
    // Some logging code here
}