.NET 7 Minimal API中Fluent Validator验证未执行问题排查
问题解决步骤
1. 注册验证器到依赖注入容器
你的代码未将TestModelValidator注册到DI容器中,O9d的验证过滤器需要从容器获取对应验证器实例。在构建WebApplication前,需添加FluentValidation服务配置:var builder = WebApplication.CreateBuilder(args); // 注册FluentValidation服务并自动扫描程序集中的验证器 builder.Services.AddFluentValidationAutoValidation() .AddFluentValidationClientsideAdapters() .AddValidatorsFromAssemblyContaining<TestModel>(); var app = builder.Build(); // 后续路由配置代码2. 修正验证器的访问修饰符
你定义的TestModelValidator是TestModel的内部类,默认访问级别为private,DI容器无法发现并创建它的实例。需将其改为public:public class TestModel { public long Id { get; set; } // 修改为public访问级别 public class TestModelValidator : AbstractValidator<TestModel> { public TestModelValidator() { RuleFor(x => x.Id).GreaterThan(0); } } }3. 确认验证过滤器作用范围
你已在路由组上调用.WithValidationFilter(),这一步是正确的,它会为组内所有端点启用验证逻辑。如果需要单独为某个端点启用验证,也可在MapPost后链式调用.WithValidationFilter()。
完成以上步骤后,当请求体传入Id<=0的内容时,验证器会正常执行,并返回对应的验证错误响应。
内容的提问来源于stack exchange,提问作者user1765862
相关产品推荐
相关产品推荐

