用途:为 .NET API 提供 HTTP 请求输入验证的综合性模式与实践指导。
主要能力:涵盖 .NET 10 内置验证(AddValidation、ValidatableType、源生成器)、FluentValidation 验证器与 DI 注册、Data Annotations 特性与 IValidatableObject 跨属性校验、用于横切关注点的终结点筛选器、ProblemDetails(RFC 9457)错误响应,以及以安全为导向的验证(ReDoS 防范、允许列表、文件上传)。资料给出了验证框架选型决策树:新 .NET 10+ 项目优先内置 AddValidation;规则复杂时用 FluentValidation;简单模型用 Data Annotations;轻量微服务可考虑 MiniValidation,并建议同一 DTO 不混用多种框架。
必要用法示例:安装 Microsoft.Extensions.Validation 后调用 builder.Services.AddValidation();类型标注 [ValidatableType] 且需为 partial,源生成器在编译期生成验证逻辑,运行时无反射,兼容 Native AOT。FluentValidation 使用 AddValidatorsFromAssemblyContaining 注册,推荐在终结点处理器或终结点筛选器中手动验证,返回 TypedResults.ValidationProblem(result.ToDictionary())。可用 IEndpointFilter 实现通用验证筛选器,并在路由组上应用以统一校验。
适用场景与限制:适用于 Minimal API 与 MVC 的请求 DTO、订单等业务规则校验及安全防护场景。注意:AddValidation 的终结点筛选器机制不参与 MVC 控制器自身模型验证流程;FluentValidation 的 ASP.NET 自动验证管线已弃用,不应再使用;配置绑定相关 Options 类需用 { get; set; } 而非 init;筛选器顺序影响执行,验证应尽早执行;ConfigureHttpJsonOptions 仅作用于 Minimal API。Blazor 表单验证、OWASP 注入防护、验证放置的架构模式与 Options 验证不在本技能范围内,资料未提供具体价格与安装包版本之外的更多细节。