Обработка ошибок из атрибутов 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]
Можно ли дополнить каким-то образом мой хендлер ошибок или решается только путём написания кастомного атрибута?