【问题标题】:Catching all exceptions in current thread捕获当前线程中的所有异常
【发布时间】:2012-10-16 19:08:39
【问题描述】:

在我的 Web 应用程序中,我有一个单向异步 WCF 服务。在此服务中,我想像在 global.asax Application_Error 中那样捕获所有异常。 我试图处理这些事件:

AppDomain.CurrentDomain.UnhandledException += (s,e) => { //some logic };
AppDomain.CurrentDomain.FirstChanceException += (s,e) => { //some logic };

甚至尝试过:

//this one is for Win Forms Application
Application.ThreadException += (s,e) => { //some logic };

//this one is for Web Application
HttpContext.Current.ApplicationInstance.Error += (s,e) => { //some logic };

但是这些处理程序都没有到达。

任何想法,我还能尝试什么?

【问题讨论】:

  • 你需要发布线程本身的代码,否则,没有足够的信息来指导你。
  • @jgauffin:感谢您的建议。

标签: c# asp.net wcf exception-handling


【解决方案1】:

WCF 允许您将实现 IErrorHandler 的对象插入到 Dispatcher 的错误处理程序中。

MSDN page 有示例代码。

【讨论】:

  • 服务是一种方式,调度程序应该能够处理这个错误吗?
  • 我知道 OneWay 是什么,但我不明白为什么“正常”错误拦截不起作用。
【解决方案2】:

如果您将这些代码行放入网页中,它们将会丢失。为什么?

因为网页的生命周期有限。为了使您的事件处理能够继续存在,您需要将其放入全局 asax 文件中。

【讨论】:

  • 不是网页,也没有ASAX文件。
  • @HenkHolterman:Global.asax 在 ASP.NET 中适用于 WCF
  • @Gev 你说“在我的 Web 应用程序中我有一个单向异步 WCF 服务。在这个服务中我想像在 global.asax Application_Error。”这就是我的答案。
  • @jgauffin :不,如果您有单向服务,则不会。
  • @Gev:您也可以将 global.asax 添加到 WCF 项目中。
猜你喜欢
  • 1970-01-01
  • 2014-02-26
  • 2014-05-20
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多