我试图捕获我的工作角色中所有未处理的异常。我尝试放一个try
-catch
块进入Run()
方法(按照建议here)但没有成功。
public override void Run()
{
try
{
base.Run();
}
catch (Exception ex)
{
Trace.TraceError("Unhandled Exception: {0}", ex);
throw ex;
}
}
该角色托管 WCF 服务,因此内部没有其他逻辑Run()
方法。在这个级别还有其他捕获异常的可能性吗?
Update 1澄清问题:角色自身托管一个 WCF 服务(在OnStart()
)其中一些操作是后台操作。当调用服务并且该方法引发意外异常时,我喜欢捕获该异常并将其写入日志。
解决方案:显然,它就像在普通的 C# 应用程序中一样:
只需添加一个处理程序到UnhandledException
像这样的事件
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
在 - 的里面OnStart()
角色的。我太专注于 Azure,以至于我认为这毕竟行不通,所以我什至没有尝试过:-)
正如我的问题中已经更新的那样,为了完整起见,这里作为答案:
显然,这就像在普通的 C# 应用程序中一样:只需向UnhandledException
像这样的事件
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
在 - 的里面OnStart()
角色的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)