Замена стандартных ответов ASP.NET Core об ошибках валидации (Fluent Validation)

Рейтинг: 0Ответов: 0Опубликовано: 28.07.2025

В проекте используется валидация при помощи Fluent Validation. Валидаторы созданы, в проект подключены так:

builder.Services.AddFluentValidationAutoValidation();
builder.Services.AddValidatorsFromAssemblyContaining<CreateJobRequestValidator>();

Валидация работает, но в ответ возвращаются не красивые и громоздкие ответы от ASP.NET, по типу:

{
    "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "errors": {
        "Title": [
            "'Title' должно быть заполнено."
        ]
    },
    "traceId": "00-44dde947b4baa88fc2790cfedb7a915a-201a597b99371ad7-00"
}

В проекте у меня всё в случае чего выбрасывает исключения и они ловятся в кастомном midlleweare. Когда я добавляю примерно такое:

catch (ValidationException ex)
        {
            context.Response.StatusCode = StatusCodes.Status400BadRequest;
            var errors = ex.Errors
                .GroupBy(e => e.PropertyName)
                .ToDictionary(
                    g => g.Key,
                    g => g.Select(e => e.ErrorMessage).ToArray()
                );

            await context.Response.WriteAsJsonAsync(new { message = "Validation failed", errors });
        }

И отключаю стандартные ошибки от ASP.NET вот так

builder.Services.Configure<ApiBehaviorOptions>(options =>
{
    options.SuppressModelStateInvalidFilter = true;
});

То валидация вообще перестаёт работать

Ответы

Ответов пока нет.