【问题标题】:ASP.NET Global.asax Application_Error works but not when using the Error eventASP.NET Global.asax Application_Error 有效,但在使用错误事件时无效
【发布时间】:2010-12-20 16:50:49
【问题描述】:

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

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

protected void Application_Error(object sender, EventArgs e)

然后它工作正常。但是,如果在 Application_Start 事件中我尝试这样做:

this.Error += new EventHandler(Application_Error);

从不调用实际事件。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我会为第一条评论投赞成票,但我不相信第二部分是真的,我目前正在运行我的应用程序,但我的 webconfig 中没有 CustomErrors 元素,它正在命中错误处理程序很好。
    • 谢谢,不知道我从哪里来的。编辑了我的回复。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      相关资源
      最近更新 更多