내 작업자 역할에서 처리되지 않은 예외를 모두 잡으려고합니다. try
- catch
블록을 Run()
방법 (제안 된대로, here)으로 넣으려고했으나 성공하지 못했습니다.Windows Azure (Worker) 역할에서 처리되지 않은 예외를 catch하는 방법
public override void Run()
{
try
{
base.Run();
}
catch (Exception ex)
{
Trace.TraceError("Unhandled Exception: {0}", ex);
throw ex;
}
}
역할은 WCF 서비스를 호스팅하기 때문에 Run()
방법 내부에는 다른 논리가 없다. 이 수준에서 예외를 잡을 다른 가능성이 있습니까? 1
업데이트 문제를 명확히하기 : 역할 자체는 일부 작업은 배경 작업입니다 (OnStart()
초기화) WCF 서비스를 호스팅합니다. 서비스가 호출되고 해당 메서드가 예기치 않은 예외를 throw하면이를 로그에 기록하기 위해이 메서드를 catch합니다.
솔루션 : 은 분명히 정상적인 C# 응용 프로그램에서 같다 : 그냥 역할의 OnStart()
안에이
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
처럼 UnhandledException
이벤트 핸들러를 추가합니다. 나는 Azure에 너무 집중하여 결국이 작업을 할 수 없다고 상상했는데, 심지어 시도하지도 않았다. :-)
단순히 'new Exception ("Testing");을 던져주는 더미 작업자 역할로 시도하십시오 –
역할은 WCF 서비스를 호스팅하므로 실제로 Run() 메소드 안에 아무것도 없습니다. 언급 했어야했다. – gumo
@ gumo : ok, base.Run 앞에 던지기를 추가하십시오. –