Правильный способ обработки системных ошибок ASP.NET MVC - PullRequest
1 голос
/ 23 декабря 2010

Каков наилучший способ обработки системной ошибки в ASP.NET MVC?Я смотрел видео на DimeCast.net , в котором парень использовал файл global.ascx, чтобы написать метод Application_Error для обработки ошибок.Но в настоящее время я обрабатываю свои ошибки в файле web.config.

Может ли кто-нибудь указать мне правильное направление, как правильно обрабатывать ошибки?Это может быть:

  1. синтаксическая ошибка
  2. исключения
  3. 404 и другие страницы / файлы не найдены

Приложение довольнобольшой.

Ответы [ 2 ]

7 голосов
/ 23 декабря 2010

Посмотрите на elmah для регистрации необработанных исключений, на самом деле есть быстрый пример nuget демо-видео

Я использую комбинацию elmah для необработанных исключений и nLog, чтобы регистрировать те, которые я могу обработать, но все же хочу регистрировать. Пока что комбинация сработала очень хорошо.

1 голос
/ 23 декабря 2010

Скорее всего, вам понадобится комбинация подходов. Некоторые ошибки могут обрабатываться непосредственно в ваших моделях, другие - в ваших контроллерах, а некоторые могут нуждаться в обработке вплоть до уровня приложения (либо через web.config, либо через global.ascx.)

Я предпочитаю обрабатывать ошибки в global.ascx, а не через перенаправление в web.config, потому что в global.ascx у меня есть больше информации о запросе, который вызвал ошибку, где, как будто я делаю перенаправление через Интернет. В настройках конфигурации часть этой информации теряется к тому времени, когда моя страница ошибок получает запрос.

Несколько недель назад я только что заметил, что ошибки 404 лучше не обрабатывать через web.config, потому что это (по замыслу) вызывает код перенаправления HTTP 302, а не истинный код HTTP 404, который указывает клиенту, что ресурс не существовать. У меня есть пост в моем блоге, где я освещаю это подробно http://hectorcorrea.com/Blog/Returning-HTTP-404-in-ASP.NET-MVC

Использование ELMAH, как предложил Брук, также очень хорошая идея.

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