Vasilek
48 строк · 1.9 Кб
1using System.Net;2using System.Text.Json;3
4namespace Vasilek.Services.ProductAPI.Middleware.CustomException5{
6public class ErrorHandlerMiddleware7{8private readonly RequestDelegate _next;9public ErrorHandlerMiddleware(RequestDelegate next) => _next = next;10public async Task InvokeAsync(HttpContext context)11{12try13{14await _next(context);15}16catch (Exception error)17{18var response = context.Response;19response.ContentType = "application/json";20switch (error)21{22case AppException ex:23// Ошибка пользовательского приложения.24response.StatusCode = (int)HttpStatusCode.BadRequest;25break;26case KeyNotFoundException ex:27// Не найден.28response.StatusCode = (int)HttpStatusCode.NotFound;29break;30case UnauthorizedAccessException ex:31// Не авторизован.32response.StatusCode = (int)HttpStatusCode.Unauthorized;33break;34case NullReferenceException ex:35// Не авторизован.36response.StatusCode = (int)HttpStatusCode.NotFound;37break;38default:39// Необработанная ошибка40response.StatusCode = (int)HttpStatusCode.InternalServerError;41break;42}43var result = JsonSerializer.Serialize(new { message = error?.Message });44await response.WriteAsync(result);45}46}47}48}
49