Обработка исключений ASP.NET Core Web API

Я начал использовать ASP.NET Core для своего нового проекта API REST после много лет использования обычного веб-API ASP.NET. Я не вижу хорошего способа обработки исключений в ASP.NET Core Web API. Я попытался реализовать фильтр / атрибут обработки исключений:

public class ErrorHandlingFilter : ExceptionFilterAttribute
{
    public override void OnException(ExceptionContext context)
    {
        HandleExceptionAsync(context);
        context.ExceptionHandled = true;
    }

    private static void HandleExceptionAsync(ExceptionContext context)
    {
        var exception = context.Exception;

        if (exception is MyNotFoundException)
            SetExceptionResult(context, exception, HttpStatusCode.NotFound);
        else if (exception is MyUnauthorizedException)
            SetExceptionResult(context, exception, HttpStatusCode.Unauthorized);
        else if (exception is MyException)
            SetExceptionResult(context, exception, HttpStatusCode.BadRequest);
        else
            SetExceptionResult(context, exception, HttpStatusCode.InternalServerError);
    }

    private static void SetExceptionResult(
        ExceptionContext context, 
        Exception exception, 
        HttpStatusCode code)
    {
        context.Result = new JsonResult(new ApiResponse(exception))
        {
            StatusCode = (int)code
        };
    }
}

И вот моя регистрация запуска фильтра:

services.AddMvc(options =>
{
    options.Filters.Add(new AuthorizationFilter());
    options.Filters.Add(new ErrorHandlingFilter());
});

Проблема, с которой я столкнулся, заключается в том, что когда в моемAuthorizationFilter это не обрабатываетсяErrorHandlingFilter, Я ожидал, что это будет поймано там, как это работало со старым ASP.NET Web API.

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

Ответы на вопрос(7)

Ваш ответ на вопрос