/
urmat
/
taskboardproject1
Обзор
Документация
Войти
/
urmat
/
taskboardproject1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
UserService
src/UserService.Api/Middlewares/GlobalExceptionHandler.cs
42 строки
2 KB
urmatgit
fix register user and create project
01 апр 2025, 16:32
01 апр 2025, 16:32
8abc87f
Код
Авторство
О чём код?
using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Mvc; namespace UserService.Api.Middlewares { public class GlobalExceptionHandler(ILogger<GlobalExceptionHandler> logger) : IExceptionHandler { public async ValueTask<bool> TryHandleAsync(HttpContext httpContext, Exception exception, CancellationToken cancellationToken) { var problemDetails = new ProblemDetails { Instance = httpContext.Request.Path }; if (exception is FluentValidation.ValidationException fluentException) { problemDetails.Title = "one or more validation errors occurred."; problemDetails.Type = "https://tools.ietf.org/html/rfc7231#section-6.5.1"; httpContext.Response.StatusCode = StatusCodes.Status400BadRequest; List<string> validationErrors = new List<string>(); foreach (var error in fluentException.Errors) { validationErrors.Add(error.ErrorMessage); } problemDetails.Extensions.Add("errors", validationErrors); } else { problemDetails.Title = exception.Message; problemDetails.Detail = exception.InnerException?.Message; } logger.LogError("{ProblemDetailsTitle}", problemDetails.Title); logger.LogError("{ProblemDetails}", problemDetails.Detail); problemDetails.Status = httpContext.Response.StatusCode; await httpContext.Response.WriteAsJsonAsync(problemDetails, cancellationToken).ConfigureAwait(false); return true; } } }