2011-01-07 11 views
9

私は、私のワーカーロールで未処理の例外をすべてキャッチしようとしています。私はtry - catchブロックをRun()メソッド(推奨here)に入れてみましたが、成功しませんでした。Windows Azure(Worker)ロールで未処理の例外をキャッチする方法

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

役割は、WCFサービスをホストするので、Run()方法の内部には他のロジックは存在しません。このレベルで例外をキャッチする可能性はありますか? 1

アップデートは、問題を明確にするには、次の役割の自己は、一部の操作は、バックグラウンド処理されている(OnStart()で初期化)WCFサービスをホストします。サービスが呼び出され、そのメソッドが予期しない例外をスローすると、そのメソッドをキャッチしてログに書き込むことが好きです。

ソリューション: は明らかに、それは通常のC#アプリケーションでのようなものです: ちょうど役割のOnStart()内でこの

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

ようUnhandledExceptionイベントにハンドラを追加します。私はAzureにとても集中していましたが、結局このことができないと思っていました。私はそれを試したこともありませんでした:-)

+0

単純に 'new Exception(" Testing ");をスローするダミーのワーカーロールでこれを試してください。 –

+0

ロールはWCFサービスをホストしているので、実際にはRun()メソッドの中には何もありません。それを言及しているはずです。 – gumo

+0

@gumo:ok、base.Runの前にスローを追加します。 –

答えて

14

はすでに答えとして完全のためにここで、私の質問に更新:

明らかに、それは通常のC#アプリケーションのようです。ただ、内部のこの

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

ようUnhandledExceptionイベントにハンドラを追加しますロールのOnStart()

0

すべての例外をキャッチします。

あなたはもう一度それを捨てて、誰かが捕まえられないようにします。

また、ログを記録していますが、Azureのログはデフォルトでオンになっていません。

もう1つの方法として、例外はありません。

関連する問題