2011-01-07 29 views
9

benim işçi rolündeki tüm işlenmemiş özel durumlar yakalamaya çalışıyorum işlenmeyen bir özel durumu yakalamak nasıl. ancak başarılı (here önerildiği gibi) Run() yöntem haline catch blok - Bir try koyarak çalıştı.Windows Azure (İşçi) Role

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

rol WCF hizmeti barındırmaktadır ve bu nedenle Run() yöntemin içinde başka hiçbir mantığı yok. Bu düzeyde istisnaları yakalamak için başka bir olasılık var mı? 1

Güncelleme sorunu açıklığa kavuşturmak için: rol öz bazı işlemler arka plan operasyonlardır (OnStart() başlatılmış) bir WCF hizmeti barındıran. Hizmet çağrıldığında ve bu yöntem beklenmedik bir istisna atarsa, günlüğüne yazmak için onu yakalamak isterim.

Çözüm: Açıkçası normal bir C# uygulama gibidir: Sadece Rolü OnStart() içinde bu

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

gibi UnhandledException etkinliğe bir işleyici ekleyin. Ben bu yüzden bile tüm özel durumları yakalayacak

+0

basitçe 'new Exception ("Test") atar bir kukla işçi rolü ile bu deneyin;' –

+0

rol WCF hizmeti barındıran, hiçbir şey Run() yöntemi içinde gerçekten var. Bundan bahsetmeliydin. – gumo

+0

@gumo: tamam, sonra tabandan önce atışı ekleyin. –

cevap

14

Daha önce cevap olarak tamlık aşkına burada, benim soru güncelleme: Açıkçası

normal bir C# uygulaması gibidir: Sadece içinde bu

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

gibi UnhandledException olaya bir işleyici ekleyin Rolün OnStart().

0

yakalamak :-) denemek vermedi, ben bundan sonra hiç çalışmıyor olabilir gerekiyordu Azure üzerinde duruldu. biri yakalandı olmayacak şekilde

Tekrar atıyor.

Ayrıca giriş yapmaktadır, ancak maliyet beri günlükleri, Azure varsayılan olarak açık değildir. Diğer alternatif ise istisna olmamasıdır.