ASP.NET Global.asax Application_Error有效,但在使用Error事件时无效

时间:2009-11-26 13:57:16

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

我有一个ASP.NET MVC应用程序,它应该捕获global.asax应用程序错误处理程序中的所有未处理的异常。

如果我按如下方式定义处理程序:

protected void Application_Error(object sender, EventArgs e)

然后它工作正常。但是,如果在Application_Start事件中我尝试并执行:

this.Error += new EventHandler(Application_Error);

永远不会调用实际事件。

有谁知道为什么,如果是这样,我做错了什么?

2 个答案:

答案 0 :(得分:3)

您不必显式添加错误事件; Application_Error应该由框架自动调用。

答案 1 :(得分:0)

事件未被调用,因为异常被捕获到应用程序中的其他位置(并且可能被吞并),或者因为您正在Application_Start事件中注册事件(不需要)。你想在Application_Error中做这样的事情:

protected void Application_Error(object sender, EventArgs e) {
  Exception exception = Server.GetLastError();
  // log exception
  // Email exception
}

我使用此方法来记录和发送所有应用程序的未捕获错误。希望这会有所帮助。