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é :-)
Pruebe esto con una función simulada que simplemente arroje 'nueva Excepción (" Prueba ");' –
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
@gumo: bien, luego agregue el lanzamiento antes de la base. Ejecutar. –