You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:14:53