2009-11-26 84 views
3

我有一个ASP.NET MVC应用程序,该应用程序应该可以捕获global.asax应用程序错误处理程序中的所有未处理的异常。ASP.NET Global.asax Application_Error在使用错误事件时不起作用

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

protected void Application_Error(object sender, EventArgs e) 

然后正常工作。但是,如果在Application_Start事件中尝试执行以下操作:

this.Error += new EventHandler(Application_Error); 

从不调用实际事件。

有谁知道为什么,如果是的话,我在做什么不正确?

回答

3

您不应该明确地添加到错误事件; Application_Error应该由框架自动调用。

+0

我会为第一个评论投票,但我不相信第二部分是真实的,我目前正在运行我的应用程序,在我的webconfig中取出CustomErrors元素,并且它的错误处理程序正常。 – TygerKrash 2010-12-02 15:05:46

+0

谢谢,不知道我从哪里去。编辑我的回应。 – Paul 2010-12-04 19:31:29

0

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

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

我用这个方法来为我所有的应用程序都日志和电子邮件未被捕获的错误。希望这可以帮助。

相关问题