ASP.NET Global.asax Application_Error可以正常工作,但使用Error事件时无法正常工作

3

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

如果我定义处理程序如下:

protected void Application_Error(object sender, EventArgs e)

如果在Application_Start事件中尝试执行如下操作:

那么它将正常工作。然而,如果我尝试执行:

this.Error += new EventHandler(Application_Error);

实际事件从未被调用。 有人知道为什么吗?如果知道,请告诉我我做错了什么。
2个回答

3
您不需要显式添加错误事件;应用程序错误应该由框架自动调用。

我会为第一条评论点赞,但我不相信第二部分是正确的。我目前在我的webconfig中没有使用CustomErrors元素运行我的应用程序,但它可以很好地触发错误处理程序。 - TygerKrash
谢谢,不确定我从哪里得到的。编辑了我的回复。 - Paul

0
事件没有被调用,可能是因为应用程序的其他地方捕获了异常(并且可能被忽略),或者是因为您在Application_Start事件中注册了该事件(不需要)。您需要在Application_Error中执行类似以下操作:
protected void Application_Error(object sender, EventArgs e) {
  Exception exception = Server.GetLastError();
  // log exception
  // Email exception
}

我使用这种方法来记录和通过电子邮件发送所有应用程序中未捕获的错误。希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接