ELMAH: sin excepciones HttpContext?
-
22-09-2019 - |
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
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):
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.