Frage

Wie kann ich feststellen, ob programmatisch oder nicht ELMAH aktiviert ist?

War es hilfreich?

Lösung

Denn:

  

kann ELMAH dynamisch eine hinzugefügt werden   ASP.NET Web-Anwendung ausgeführt wird, oder   auch alle ASP.NET Web-Anwendungen, die auf einem   Maschine, ohne dass   Neukompilierung oder Umschichtung.

Sie sollten müssen nicht erkennen, ob es vorhanden ist. Schreiben Sie einfach Ihren Logging-Code, als ob es vorhanden war, und wenn es nicht ist, wird nichts protokolliert.

Von Interesse ?: Wie ELMAH zur Arbeit mit ASP.NET MVC [Handle] Attribut bekommen? (akzeptierte Antwort von ELMAH des Autors)

Andere Tipps

Sie können alle geladenen Module aufzählen (via Httpapplication .Modules ) und wenn Elmah Modul vorhanden ist, dann wird Elmah aktiviert:


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

Nicht sicher. Lassen Sie sich diese nicht treed.

Im Anschluss an Tadas' Antwort kam ich mit dem folgenden Code auf das funktioniert für mich (man beachte, dass ich das von VB übersetzt haben, ohne zu überprüfen, ob es kompiliert, so YMMV):

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

Dies wird auch um die Probleme, die ich mit dem Erhalt einer 401-Antwort hatte, als elmah.axd anfordert (I wurde unter Verwendung von Windows-Authentifizierung) und ist viel schneller, und nicht einen bestimmten Standort für elmah.axd nehmen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top