Глобальная обработка ошибок (за пределами контроллера) в ASP.NET MVC

Попытайтесь считать это: Skype FAQ - изменение аудиосистемы

7
задан user10789 31 August 2009 в 18:53
поделиться

3 ответа

Поскольку MVC построен на основе asp.net, вы должны иметь возможность определить страницу глобальной ошибки в web.config , как и в веб-формах, например.

   <customErrors mode="On" defaultRedirect="~/ErrorHandler" />
5
ответ дан 6 December 2019 в 08:44
поделиться

Вы можете создать фильтр, который ищет исключение в методе OnActionExecuted :

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class WatchExceptionAttribute : ActionFilterAttribute {
  public override void OnActionExecuted(ActionExecutedContext filterContext) {
    if (filterContext.Exception != null) {
      // do your thing here.
    }
  }
}

Затем вы можете поместить [WatchException] в контроллер или Action Method, и это позволит регистрировать исключения. Если у вас много контроллеров, это может быть утомительно, поэтому, если у вас общий базовый контроллер, вы можете переопределить там OnActionExecuted и сделать то же самое. Я предпочитаю метод фильтрации.

5
ответ дан 6 December 2019 в 08:44
поделиться

Что касается отображаемой страницы, вам нужно создать раздел customErrors в вашем web.config и настроить его для любых кодов состояния, которые вы хотите обрабатывать. .

Пример:

<customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly">
  <error statusCode="500" redirect="InternalError.htm"/>
</customErrors>

Что касается регистрации исключений, я бы рекомендовал использовать ELMAH . Он прекрасно интегрируется с сайтами ASP.NET MVC.

1
ответ дан 6 December 2019 в 08:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: