Я наткнулся на программное решение. Полностью исключив ссылки на web.config, вы можете добавить модуль в global.asax, если будете осторожны с жизненным циклом.
В global.asax добавить:
public static ErrorModule myErrorModule;
public override void Init()
{
base.Init();
myErrorModule = new ErrorModule(new LogImplementer());
myErrorModule.Init(this);
}
где "LogImplementer" реализует ILogger и просто добавляет конструктор в модуль http:
public ErrorModule(ILogger injected)
{
this.Logger = injected;
}
Есть несколько предупреждений о вреде для здоровья. Вы должны быть очень осторожны с тем, где вы делаете это в global.asax (я почти уверен, что Init () прав, но я не уверен), и модуль не добавляется в коллекцию HttpApplication.Modules только для чтения. , Кроме того, прекрасно работает.