Я пытаюсь поймать все необработанные исключения в моей рабочей роли. Я попытался поместить блок try
- catch
в метод Run()
(как предложено здесь ), но безуспешно.
public override void Run()
{
try
{
base.Run();
}
catch (Exception ex)
{
Trace.TraceError("Unhandled Exception: {0}", ex);
throw ex;
}
}
Роль размещает службу WCF, поэтому внутри метода Run()
нет другой логики. Есть ли еще возможность ловить исключения на этом уровне?
Обновление 1
Чтобы выяснить проблему: роль self содержит службу WCF (инициализированную в OnStart()
), где некоторые операции являются фоновыми операциями. Когда служба вызывается и этот метод генерирует непредвиденное исключение, мне нравится ловить это, чтобы записать его в журнал.
Решение:
Очевидно, это как в обычном приложении на C #:
Просто добавьте обработчик к событию UnhandledException
, как это
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
внутри OnStart()
Роли. Я был так сосредоточен на Azure, что предположил, что это не сработает, и даже не попробовал: -)