我有一个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有什么问题?
答案 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
}