Решение очень неустойчивого исключения в приложении .net - PullRequest
2 голосов
/ 21 декабря 2009

У меня есть приложение asp.net MVC в производстве, которое очень редко, но очень последовательно выдает одно и то же исключение, и я не знаю почему. Я не могу, независимо от того, что я делаю, воспроизвести исключение ни в рабочей среде, ни в среде разработки.

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

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

Но тогда я думал, что могу поспорить, что есть лучший, более портативный способ сделать это. Кто-нибудь может помочь?

EDIT

Это то, над чем я сейчас работаю.

Ответы [ 2 ]

2 голосов
/ 21 декабря 2009

Рассматривали ли вы использование ELMAH ?

ELMAH (Модули регистрации ошибок и Обработчики) - ошибка приложения лесозаготовительный объект, который полностью подключаемый. Это может быть добавлено динамически к работающему веб-приложению ASP.NET, или даже все веб-приложения ASP.NET на машине, без необходимости повторная компиляция или повторное развертывание.

Как только ELMAH был брошен в работает веб-приложение и настроен соответственно, вы получаете следующее объекты без изменения одного строка вашего кода:

  • Регистрация почти всех необработанных исключений.
  • Веб-страница для удаленного просмотра всего журнала перекодированных исключений.
  • Веб-страница для удаленного просмотра полной информации о любом из зарегистрированных исключение.
  • Во многих случаях вы можете просмотреть исходный желтый экран смерти что ASP.NET генерируется для данного исключение, даже в режиме customErrors выключен.
  • Уведомление по электронной почте о каждой ошибке в момент ее возникновения.
  • RSS-лента последних 15 ошибок из журнала.

ELMAH не будет регистрировать состояние приложения, но, возможно, вы могли бы выдать пользовательское исключение, которое инкапсулирует любое состояние, которое вам нужно увидеть. Вы ищете что-то вроде дампа ядра? Возможно, что-то вроде debugdiag будет лучше:

Средство диагностики отладки (DebugDiag) предназначено для помощи в устранении неполадок, таких как зависания, низкая производительность, утечки памяти или фрагментация, а также сбои в любом процессе пользовательского режима. Этот инструмент включает в себя дополнительные сценарии отладки, ориентированные на приложения IIS, компоненты доступа к веб-данным, COM + и соответствующие технологии Microsoft.

0 голосов
/ 21 декабря 2009

Вы ловите где-то исключение базы данных и почему-то ваша переменная модели не заполняется, или ваш код не разветвляется, чтобы указать на необходимость повторной попытки (например, страница / сообщение об ошибке)?

Я бы также порекомендовал ELMAH , он дает вам много заголовков типа HTTP / REQUEST / RESPONSE из запроса и может иметь достаточно информации, чтобы вы могли отладить проблему лучше / быстрее. Вероятно, вам придется проделать некоторую работу, чтобы заставить Elmah работать, потому что у вас уже есть универсальный обработчик / механизм ведения журнала, так что на самом деле нет никаких неперехваченных исключений, которые ELMAH мог бы обработать прямо из коробки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...