FluentValidation 不会在模型状态无效时自动拒绝请求

FluentValidation not rejecting requests automatically on invalid model state

验证者都放在同一个项目中(Startup.cs)。
代码形式Startup.cs:

services.AddControllers()
    .AddFluentValidation(s =>
    {
        s.RegisterValidatorsFromAssemblyContaining<Startup>();
    });

ModelState.IsValid 属性 实际上变为假,当请求数据不符合验证器设置规则时,但我需要手动设置实际的验证器错误消息。

验证器本身:
public class UserRegistrationRequestValidator : AbstractValidator<RegisterUserRequest>
{
    /// <summary>
    /// Initializes a new instance of the <see cref="UserRegistrationRequestValidator"/> class.
    /// </summary>
    public UserRegistrationRequestValidator()
    {
        RuleFor(u => u.Email)
            .Matches("^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$")
            .WithMessage(RegistrationRequestValidatorMessages.WrongEmailFormat);
        RuleFor(u => u.Password)
            .Matches("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$")
            .WithMessage(RegistrationRequestValidatorMessages.PasswordFormatNotValid);

        RuleFor(u => u.FirstName)
            .Matches("^[A-Za-z]{2,15}$")
            .WithMessage(RegistrationRequestValidatorMessages.FirstNameWrongFormat);

        RuleFor(u => u.LastName)
            .Matches("^[A-Za-z]{2,15}$")
            .WithMessage(RegistrationRequestValidatorMessages.LastNameWrongFormat);
    }
}

基本上,我忘了用 [ApiController][Route] 属性标记我的 AuthenticationController。