2011-01-07 18 views
9

Próbuję przechwycić wszystkie nieobsługiwane wyjątki w mojej roli pracownika. Próbowałem wstawić blok try - (zgodnie z sugestią here), ale bez powodzenia.Jak wychwycić nieobsługiwany wyjątek w usłudze Windows Azure (Worker) Rola

public override void Run() 
{ 
    try 
    { 
    base.Run(); 
    } 
    catch (Exception ex) 
    { 
    Trace.TraceError("Unhandled Exception: {0}", ex);  
    throw ex; 
    } 
} 

Rola gospodarzem usług WCF, więc nie ma innej logiki wewnątrz metody Run(). Czy istnieje jeszcze możliwość wychwycenia wyjątków na tym poziomie?

Update 1 W celu wyjaśnienia problemu: Rola samo gospodarzem usługę WCF (zainicjowany w OnStart()) gdzie niektóre operacje są operacjami tle. Gdy usługa jest wywoływana i ta metoda zgłasza nieoczekiwany wyjątek, lubię to przechwycić, aby zapisać go w dzienniku.

Rozwiązanie: Oczywiście to jest jak w normalnej aplikacji C#: Wystarczy dodać do obsługi zdarzenia UnhandledException jak ten

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

wewnątrz OnStart() roli. Byłem tak bardzo skoncentrowany na platformie Azure, że nie mogłem w końcu działać, nawet go nie wypróbowałem :-)

+0

Wypróbuj to z rolą robotyczną, która po prostu wyrzuca 'nowy wyjątek (" Testowanie ");' –

+0

Rola jest hostem usługi WCF, więc nie ma nic naprawdę w metodzie Run(). Powinienem o tym wspomnieć. – gumo

+0

@ gumo: ok, a następnie dodaj rzut przed bazą.Run. –

Odpowiedz

14

Jak już aktualizowany w moim pytaniu tutaj ze względu na kompletność jako odpowiedź:

Oczywiście to jest jak w normalnej aplikacji C#: Wystarczy dodać obsługi do zdarzenia UnhandledException jak ten

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

wewnątrz OnStart() tej roli.

0

Połów złapie wszystkie wyjątki.

Rzucasz to ponownie, aby nikt nie został złapany.

Ponadto użytkownik loguje się, ale dzienniki nie są domyślnie włączone na platformie Azure, ponieważ są one kosztowne.

Inną alternatywą jest to, że nie ma wyjątków.

Powiązane problemy