Обработка ошибок из атрибутов ASP.NET

Пишу web-api проект с авторизациями и ролями. В проекте присутствует middleware с обработкой всех поступающих ошибок

public sealed class ExceptionMiddleware
{
    public ExceptionMiddleware(RequestDelegate nextRequestDelegate)
    {
        _nextRequestDelegate = nextRequestDelegate;
    }

    private readonly RequestDelegate _nextRequestDelegate;
    
    
    public async Task InvokeAsync(HttpContext context)
    {
        try
        {
            await _nextRequestDelegate(context);
        }
        catch (Exception error)
        {
            var response = context.Response;
            response.ContentType = "application/json";

            response.StatusCode = error switch
            {
                NullReferenceException x => (int)HttpStatusCode.BadRequest,
                RequestLogicException x => (int)HttpStatusCode.BadRequest,
                UnauthorizedAccessException x => (int)HttpStatusCode.Unauthorized,
                _ => (int)HttpStatusCode.InternalServerError
            };

            string result = JsonSerializer.Serialize(new ApiResponse(null, error?.Message));
            await response.WriteAsync(result);
        }
    }
}

Но он не обрабатывает ошибки, поступившие из атрибутов авторизации, например из [Authorize]

Можно ли дополнить каким-то образом мой хендлер ошибок или решается только путём написания кастомного атрибута?


Ответы (0 шт):