Вопрос

Я использую Elmah с ASP.NET и задаюсь вопросом, как я бы добавил пользовательские данные, такие как переменная сеанса, к нечеткому электронной почте исключения.

Я пробовал несколько обработчиков в файле Global.asax, но, кажется, не могу найти правильный.

Это было полезно?

Решение

Для этого я подумал, что вам нужно изменить Elmah источник и перекомпилировать. Это не должно быть слишком сложно достичь. Если вы посмотрите на конструктор Elmah.Error класс, HttpContext передается, из которого вы должны иметь возможность получить необходимую вам информацию, например, сеанс, переменные формы и т. Д. Вы можете добавить пользовательские поля в Elmah.Error класс для этих данных

я думаю Elmah.ErrorMailHtmlFormatter класс - это то, где электронное письмо построено с использованием HtmlTextWriter, и здесь вы можете вставить код в RenderSummary() Метод включения пользовательских полей, которые вы добавили в Elmah.Error.

Я знаю, что это может быть боль, чтобы начать работать с источником, но лично я думаю, что это самый чистый способ, так как в настоящее время нет никаких средств для шаблонов отчетов/электронной почты, и лучше, чтобы набрать что -то, чтобы изменить результат после его сгенерирования.

Другие советы

Ответ Эндрю очень помог, спасибо. Я закончил тем, что сделал следующее:

  1. Добавлено событие он настройки в модуль HTTP Errorrormail. Событие Args для этого события имеет свойство namevalueCollection.
  2. Я справился с мероприятием по строительству в Global.asax.
  3. Поскольку httpmodules не всегда имеет доступ к SessionState, esp. Если исключение происходит до загрузки сеанса, я скопировал данные, которые я хотел, сообщил в кэше HTTPApplication (индексированное SessionID).
  4. Когда происходит исключение, я получаю данные, которые я хочу, от кэша приложения, через сеанс, хранящийся в запросе (в частности, в файле cookie). Я генерирую namevalueCollection из этих данных и отправляю его обратно в HTTPModule через ARGS -строительство.
  5. Затем данные отображаются на электронную почту аналогично тому, как отображается раздел переменных сервера.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top