c# asp.net exception elmah httpcontext

c# - elmah: excepciones sin HttpContext?



asp.net exception (4)

Asegúrate de configurar el nombre de tu aplicación en web.config

<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="nibWeb" applicationName="Nib.Services" />

y entonces

ErrorLog.GetDefault(null).Log(new Error(error));

trabajará

Genero un hilo en Application_Start y me gustaría registrar excepciones. No hay Context/HttpContext/HttpContext.Current , entonces, ¿cómo podría lograr que se registre?

Por el momento, no capta ninguna excepción en mis hilos y si escribo ErrorSignal.FromCurrentContext().Raise(ex); Me sale un error sobre el contexto no puede ser nulo.

Tal vez pueda crear un HttpContext ficticio, pero de alguna manera no creo que funcione bien.

-edit- Probé ErrorSignal.Get(new HttpApplication()).Raise(ex); y no parece recoger esa excepción.


No estaba usando <errorLog> como en la respuesta de Brendan Carey porque solo estaba registrando en memoria. Sin embargo, su comando funcionó muy bien en mi caso sin nombrar la aplicación:

Elmah.ErrorLog.GetDefault(null).Log(new Elmah.Error(new Exception("The application has done something.")));

Tuve que recompilar Elmah con .NET 4.0, debido a un error sobre necesitar System.Web.Abstractions 3.5.0.0. Mi fork compiled-for-.NET 4.0 está aquí si alguien lo quiere (también fuerte denominación):

http://code.google.com/r/scottstafford-elmah/


Para mi aplicación, this.Context.ApplicationInstance en Application_Start para poder llamar a Elmah.ErrorSignal.Get con la instancia guardada. Con ErrorSignal , podría ErrorSignal . Esto pasa por todos los filtros de correo electrónico.

A continuación está el código. Yo uso FluentScheduler para

public class Global : HttpApplication { void Application_Start(object sender, EventArgs e) { var application = Context.ApplicationInstance; FluentScheduler.TaskManager.UnobservedTaskException += (FluentScheduler.Model.TaskExceptionInformation i, UnhandledExceptionEventArgs a) => Elmah.ErrorSignal.Get(application).Raise(i.Task.Exception); } }