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