【问题标题】:Application_Error does not fire?Application_Error 不会触发?
【发布时间】:2011-08-02 00:39:02
【问题描述】:

在 Webform1.aspx.cs 中:

protected void Page_Load(object sender, EventArgs e)
{
    throw new Exception("test exception");
}

在 Global.asax.cs 中:

protected void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (Server.GetLastError() is HttpUnhandledException)
        Server.Transfer("ErrUnknown.aspx");
}

但 Application_Error 事件处理程序永远不会被调用。相反,我得到一个运行时错误页面。

在引发异常后调用 Application_Error 我该怎么办?

【问题讨论】:

  • 您的 web.config 对自定义错误部分有何看法?
  • 没什么。您指的是 customErrors 部分吗?
  • 是的,还要检查编译Debug=True是set
  • 没什么,因为我希望在 Application_Error 中处理异常。知道为什么它不会被解雇吗?可能有趣的是:我使用的是 VS.NET WebApplication 项目,而不是 VS.NET 网站项目。会是这个原因吗?
  • 我意识到这已经解决了,但对于任何阅读本文的人来说,Customerrors 部分和 Debug=True 应该对此没有影响。无论这些设置如何,错误都应该通过 OnError 和 Global ASAX Error 事件。请注意,如果继承 ConfigurationException 的异常不会通过此处讨论的 OnError 或 Global ASAX 错误事件...stackoverflow.com/questions/25299325/…

标签: .net asp.net global-asax onerror


【解决方案1】:

看起来不错,应该调用 Application_Error。

Debugging 你的应用程序检查了吗?

实际上你错过了Server.ClearError(),所以异常被传递给asp.net,但你应该在这里禁止它,因为你自己处理它。

protected void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (Server.GetLastError() is HttpUnhandledException)
    {
        // suppressing the error so it should not pass to asp.net
        Server.ClearError();
        Server.Transfer("ErrUnknown.aspx");
    }
}

【讨论】:

  • 你好。调试器在抛出异常的语句处中断 Page_Load 并且不会继续到 Application_Error。有什么建议吗?
【解决方案2】:

我发现了问题。

Server.Transfer("ErrUnknown.aspx")

是原因。

在尝试直接在浏览器中查看“ErrUnknown.aspx”时,我意识到该页面中有错误。更正后 Server.Transfer 工作

虽然在调试应用程序时事件没有被触发,但这是一种误导?

无论如何。

【讨论】:

  • 不确定这是否适合所有人
猜你喜欢
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 2016-11-12
  • 2011-06-30
  • 2011-04-12
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多