Pregunta

¿Cómo puedo determinar mediante programación si o no ELMAH está activado?

¿Fue útil?

Solución

Debido a que:

  

ELMAH se puede añadir dinámicamente a una   que ejecuta la aplicación Web ASP.NET o   incluso todas las aplicaciones Web ASP.NET en un   máquina, sin necesidad de   re-compilación o redistribución.

que no es necesario para detectar si está presente. Sólo tiene que escribir el código de la tala como si estuviera presente, y si no lo es, no se registrarán.

De interés ?: Como llegar a ELMAH trabajo con ASP.NET MVC atributo [HandleError]? (respuesta aceptada es por el autor de ELMAH)

Otros consejos

Puede enumerar todos los módulos cargados (a través de HttpApplication .Modules ) y si existe módulo Elmah, entonces Elmah está habilitada:


foreach (var m in Application.Modules) {
  if (m is Elmah.ErrorlogModule) {
   // ...
  }
}

No está seguro. no han arbolado esto.

con la respuesta Tadas', que llegó con el siguiente código que funciona para mí (nota que he traducido esto desde VB sin comprobar si se compila, por lo que tu caso es distinto):

bool foundElmah = false;

foreach (var m in HttpContext.Current.ApplicationInstance.Modules) {
    var module = HttpContext.Current.ApplicationInstance.Modules.Item(m);
    if (module is Elmah.ErrorLogModule || module is Elmah.ErrorMailModule || module is Elmah.ErrorFilterModule || module is Elmah.ErrorTweetModule) {
        foundElmah = true;
        break;
    }
}

if (foundElmah) {
    // do something here, like populate the application cache so you don't have to run this code every time
    return true;
} else {
    // store in application cache, etc.
    return false;
}

Esto también se pone en torno a los problemas que tenía con la obtención de una respuesta 401 al solicitar elmah.axd (que estaba usando la autenticación de Windows), y es mucho más rápido, y no asume un lugar específico para elmah.axd.

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