2011-01-07 20 views
9

Estoy tratando de detectar todas las excepciones no controladas en mi rol de trabajador. Intenté poner un bloque try - catch en el método Run() (como se sugiere here) pero sin éxito.Cómo detectar una excepción no controlada en Windows Azure (Trabajador) Rol

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

El papel alberga un servicio WCF, así que no hay otra lógica dentro del método Run(). ¿Hay otra posibilidad de detectar excepciones en este nivel?

Actualización 1 Para aclarar el problema: El papel auto alberga un servicio WCF (inicializado en OnStart()), donde algunas operaciones son operaciones en segundo plano. Cuando se llama al servicio y ese método arroja una excepción inesperada, me gusta atraparlo para escribirlo en el registro.

Solución: Obviamente es como en una aplicación normal de C#: Sólo agregar un controlador para el evento como éste UnhandledException

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

dentro del OnStart() del papel. Estaba tan concentrado en Azure que supuse que esto no podría funcionar después de todo, que ni siquiera lo intenté :-)

+0

Pruebe esto con una función simulada que simplemente arroje 'nueva Excepción (" Prueba ");' –

+0

La función aloja un servicio WCF, por lo que no hay nada realmente dentro del método Run(). Debería haber mencionado eso. – gumo

+0

@gumo: bien, luego agregue el lanzamiento antes de la base. Ejecutar. –

Respuesta

14

Como ya se ha informado en mi pregunta, aquí por el amor de integridad como respuesta:

Obviamente, es como en una aplicación normal de C#: Sólo tiene que añadir un controlador para el evento UnhandledException como esto

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

interior el OnStart() del Rol.

0

El catch captará todas las excepciones.

Lo está arrojando de nuevo para que no lo atrapen.

También está iniciando sesión, pero los registros no están activados por defecto en Azure, ya que cuestan.

La otra alternativa es que no hay ninguna excepción.

Cuestiones relacionadas