Я написал HttpModule для ASP.NET, который будет проверять текущее исключение (если оно есть) и заключать его в новое исключение с уникальным идентификатором. Затем я хочу, чтобы Элма зарегистрировал это исключение для упаковки.
Мой модуль работает и находится перед модулем Elmah, однако я не могу понять, как изменить Server.GetLastError (), чтобы мое новое исключение было зарегистрировано!
Я пробовал:
var originalException = context.Server.GetLastError();
var app = (HttpApplication)sender;
var context = app.Context;
context.ClearError();
context.AddError(new WrapperException(originalException));
Но при этом свойство context.Error возвращает ноль.
На самом деле ClearError не выполняет то, что объявлено: "Удаляет все ошибки для текущего HTTP-запроса."
Это не делает этого. Массив AllErrors все еще содержит исключения; все это заставляет GetLastError возвращать ноль.
Вы не можете ни устанавливать context.AllErrors, ни вставлять что-либо в массив (это копия).
Вы также не можете выдать новое исключение: страница ошибки видит только исходное исключение, а Элма даже не регистрирует его.
Я начинаю думать, что это невозможно.