В дополнение к ответу Тадаса я придумал следующий код, который работает для меня (обратите внимание, что я перевел это из VB, не проверяя, компилируется ли он, поэтому 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;
}
Это также позволяет обойти проблемы, с которыми я столкнулся при получении ответа 401 при запросе elmah.axd (я использовал проверку подлинности Windows), и работает намного быстрее и не предполагает конкретного расположения для elmah.axd.