我有一个ASP.NET MVC应用程序,它应该捕获global.asax应用程序错误处理程序中的所有未处理的异常。
如果我按如下方式定义处理程序:
protected void Application_Error(object sender, EventArgs e)
然后它工作正常。但是,如果在Application_Start事件中我尝试并执行:
this.Error += new EventHandler(Application_Error);
永远不会调用实际事件。
有谁知道为什么,如果是这样,我做错了什么?
答案 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
}
我使用此方法来记录和发送所有应用程序的未捕获错误。希望这会有所帮助。