Pregunta

Me generará un subproceso en Application_Start y le gustaría conectarse excepciones. No hay ninguna Context/HttpContext/HttpContext.Current, así que ¿cómo podría yo conseguir que ingrese?

Por el momento, no coge 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 puede crear un maniquí HttpContext pero de alguna manera no creo que va a funcionar bien.

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

.
¿Fue útil?

Solución

Asegúrese de configurar el nombre de la aplicación en web.config

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

y

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

funcionará

Otros consejos

Yo no estaba usando <errorLog> como en la respuesta de Brendan Carey porque yo era solamente el registro en memoria. Sin embargo, su mando funcionó muy bien en mi caso sin nombrar a la aplicación:

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

Yo tenía que volver a compilar Elmah con .NET 4.0, debido a un error sobre la necesidad System.Web.Abstractions 3.5.0.0. Mi compiled-for-.NET 4.0 tenedor es aquí si alguien lo quiere (también fuerte nomenclatura):

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

Para mi solicitud, me salvó this.Context.ApplicationInstance en Application_Start para que pueda llamar Elmah.ErrorSignal.Get con la instancia salvado. Con la ErrorSignal, pude entonces Raise. Esto pasa por todos los filtros de correo electrónico.

A continuación se muestra el código. Yo uso FluentScheduler a

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);

    }
}

I añadió una solución a: Usando ELMAH en un aplicación de consola que agrega capacidad de enviar correo electrónico, mensajes de twitter y filtro, además de la tala.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top