【问题标题】:What is the right way to add an event handler to AppDomain in ASP.NET?在 ASP.NET 中向 AppDomain 添加事件处理程序的正确方法是什么?
【发布时间】:2013-12-04 03:25:24
【问题描述】:

我希望能够在 ASP.NET 应用程序中记录第一次机会异常,而 way you do this 是通过处理 AppDomain.CurrentDomain.FirstChanceException:

    AppDomain.CurrentDomain.FirstChanceException += 
        (object source, FirstChanceExceptionEventArgs e) =>
        {
            Console.WriteLine("FirstChanceException event raised in {0}: {1}",
                AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);
        };

但我不确定什么时候应该在 ASP.NET 应用程序中调用它。每个应用程序是否有一个 AppDomain,所以这可以出现在 Application_Start 事件中吗?或者可能有多个 AppDomains 而这会错过其中的一些?或者这是否可以以某种方式添加处理程序两次?

换句话说,这个事件处理程序创建代码应该去哪里?

【问题讨论】:

  • 您是否在 Global.asax 中尝试过?任何关于它的样本没有性能问题?我的应用程序 ASP.NET 4.6.1 有一个 dump production。仅 20 分钟就有 7000 个例外情况第一次机会例外情况)。
  • stackoverflow.com/questions/10697100/… 用于问题 outofmemorystackoverflow exceptions仅用于调试目的使用AppDomain.CurrentDomain.FirstChanceException ?

标签: asp.net


【解决方案1】:

Global 类中的Application_Start 应该是放置它的好地方。 但是,当您要做的一切都是捕获异常时,为什么不使用 Global.asax 文件中的 Application_Error 函数:http://msdn.microsoft.com/en-us/library/24395wz3.aspx

【讨论】:

  • Application_Error 不会捕获第一次机会异常。
  • 谢谢。我会试试的。我需要这个,因为我继承了这段代码,它包含大量 Try..Catch 块,它们只会吃错误并继续,所以异常正在被“处理”,Application_Error 不会触发。跨度>
  • @JohnSaunders:我认为他的意思是为什么要为第一次机会异常而不是通过Application_Error 获取未处理的异常而烦恼,但我的其他评论解释了我为什么需要这个。
  • @JohnSaunders:可以,但有 950 个,我不确定现有功能是否存在致命错误,这些错误一直存在但不会破坏应用程序因为 catch 和 ignore 块。我的最终目标是删除它们,但我担心这样做会引入数百个错误,或者更准确地说,让它们在被忽略之前破坏应用程序。这只是我研究问题时记录异常的一个过渡步骤。
  • @JohnSaunders ASP.NET 4.6.1 的性能有什么问题吗?我的应用有一个转储生产。仅 20 分钟就有 7000 第一次机会例外。我需要安全地记录 first chance exceptions 来研究问题,而不需要 stackoverflow 异常。无论如何,stackoverflow.com/questions/10697100/… 对于问题 outofmemorystackoverflowexceptions仅用于调试目的在 Global.asax 的 Application_Start 中使用 AppDomain.CurrentDomain.FirstChanceException
猜你喜欢
  • 2016-02-03
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多