Question

Comment puis-je déterminer si oui ou non programme ELMAH est activé?

Était-ce utile?

La solution

Parce que:

  

ELMAH peut être ajouté dynamiquement à un   exécutant l'application Web ASP.NET, ou   même toutes les applications Web ASP.NET sur un   machine, sans qu'il soit nécessaire de   recompilation ou re-déploiement.

vous ne devriez pas besoin de détecter si elle est présente. Il suffit d'écrire votre code d'enregistrement comme si elle était présente, et si ce n'est pas, rien ne sera enregistré.

intérêt ?: Comment obtenir ELMAH travailler avec ASP.NET MVC [HandleError] attribut (réponse est acceptée par l'auteur ELMAH)

Autres conseils

Vous pouvez énumérer tous les modules chargés (via HttpApplication .Modules ) et si le module existe Elmah, puis Elmah est activé:


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

Je ne sais pas. Je n'ai pas treed cela.

Suite à la réponse de Tadas, je suis venu avec le code suivant qui fonctionne pour moi (notez que je traduis cela de VB sans vérifier si elle compile, si 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;
}

obtient également autour des problèmes que j'ai eu à obtenir une réponse 401 lors de la demande elmah.axd (j'utilisais l'authentification Windows), et est beaucoup plus rapide, et ne suppose pas un emplacement spécifique pour elmah.axd.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top