Добавление глобальной обработки исключений в ASP.NET - PullRequest
1 голос
/ 14 января 2009

Я работаю на довольно большом веб-сайте. В настоящее время у нас есть 4 веб-сервера и активный пассивный кластер БД, работающий на ASP.NET 2.0 с C #. В настоящее время наша обработка исключений не перехватывает правильное генерируемое исключение. Я слышал, это потому, что Server.GetLastError() не является поточно-ориентированным ( примечание : в настоящее время мы не используем Server.GetLastError().GetBaseException(), что может быть причиной того, что мы не получаем правильную ошибку ).

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

Наши опции:

  • Просмотрите все наши классы / методы (сотни, если не тысячи), чтобы добавить блоки try / catch / finally, чтобы перехватить правильное исключение.
  • Найдите способ правильно обработать исключения в global.asax.

Итак, я думаю, мои вопросы:

  • Является ли Server.GetLastError() потокобезопасным?
  • Если два исключения генерируются одновременно, будут ли регистрироваться оба?
  • Есть ли лучший способ справиться с этим, чем я перечислил?

Ответы [ 2 ]

1 голос
/ 14 января 2009

Я считаю, что вы не должны изменять первоначальное приложение вообще. Вы должны создать и зарегистрировать в web.config IHttpModule, который перехватывает событие Error, чтобы рекурсивно регистрировать выданное исключение и его внутренние исключения.

Дополнительная литература :

0 голосов
/ 14 января 2009

Вы должны взглянуть на Стивена А. Лоу CALM продукта.

Это действительно хорошее плагиновое решение.

(Отказ от ответственности: я был одним из бета-тестеров)

...