Когда фильтр исключений ядра .net вызывается после возникновения исключения? - PullRequest
0 голосов
/ 28 января 2019

В моем API у меня есть стандартный контроллер, содержащий действие, действие вызывает службу, которая затем обращается к клиенту, чтобы связаться с API стороннего производителя.

Я ищу реализовать фильтр исключений что-то подобноеto:

public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
    private readonly IHostingEnvironment _hostingEnvironment;
    private readonly IModelMetadataProvider _modelMetadataProvider;

    public CustomExceptionFilterAttribute(
        IHostingEnvironment hostingEnvironment,
        IModelMetadataProvider modelMetadataProvider)
    {
        _hostingEnvironment = hostingEnvironment;
        _modelMetadataProvider = modelMetadataProvider;
    }

    public override void OnException(ExceptionContext context)
    {
        if (!_hostingEnvironment.IsDevelopment())
        {
            // do nothing
            return;
        }
        var result = new ViewResult {ViewName = "CustomError"};
        result.ViewData = new ViewDataDictionary(_modelMetadataProvider,context.ModelState);
        result.ViewData.Add("Exception", context.Exception);
        // TODO: Pass additional detailed data via ViewData
        context.Result = result;
    }
}

Если мой клиентский класс, например, выдал исключение, вызовет ли фильтр немедленный вызов, даже если у моего класса обслуживания, который вызывает клиентский класс, была попытка перехвата, готовая перехватить такое исключение?

1 Ответ

0 голосов
/ 28 января 2019

Нет.Согласно документации , на которую вы ссылаетесь , фильтр исключений будет вызываться только необработанными исключениями;если клиентское исключение обрабатывается службой и не перебрасывается, фильтр исключений не сработает.

Фильтры исключений:

  • Не иметь до и послеСобытия.
  • Реализация OnException или OnExceptionAsync.
  • Обрабатывать необработанные исключения, возникающие при создании контроллера, привязке модели, фильтрах действий или методах действий.
  • Не перехватывать исключения, возникающие в фильтрах ресурсов, фильтрах результатов или выполнении результата MVC.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...