FluentValidation's ASP.NET Core package deprecated: what enterprise teams need to know
The FluentValidation.AspNetCore package is officially deprecated as of version 11.9.1, marking a significant shift for .NET teams building enterprise APIs. The change affects automatic validation pipeline integration that many projects have relied on since ASP.NET Core 2.0.
What changed
The deprecated package provided automatic validation through AddFluentValidationAutoValidation(). That convenience layer is gone. Teams now need to register validators explicitly in dependency injection or use action filters for validation.
The core FluentValidation package remains actively maintained, with 1M+ monthly NuGet downloads. What's changing is how it hooks into ASP.NET Core.
The registration pattern that matters
Enterprise teams should register validators with explicit scoping:
services.AddScoped<IValidator<UserCreateRequest>,
UserCreateRequestValidator>();
Alternatively, use AddValidatorsFromAssemblyContaining<T>() to scan assemblies, but be clear about validator lifetimes. Scoped registration prevents memory leaks from singleton validators holding request-specific state.
One validator per request model
The article's core advice stands: one validator per API contract. This isn't FluentValidation doctrine, it's practical architecture. Generic validators that handle multiple request types turn into branching nightmares.
A CreateUserRequest and UpdateUserRequest might share field names, but they have different business rules. Separate validators keep those rules explicit and testable.
What this means for existing projects
Migration is straightforward but not automatic. Projects using the deprecated package need to:
- Switch to manual validator registration
- Review validator lifetimes (transient vs scoped)
- Update integration tests that relied on automatic validation
The Options Pattern integration for startup validation remains unaffected.
The alternative view
For smaller APIs, Data Annotations might be sufficient. The complexity overhead of FluentValidation makes sense when you have:
- Complex cross-field validation rules
- Validators that need injected services
- Multiple validation contexts per model
- Significant test coverage requirements
If you're validating five fields on three endpoints, attributes work fine.
What to watch
The deprecation landed quietly in late 2024. No replacement package is planned. The maintainers are signaling that manual integration is the intended path forward. Teams should budget migration time when planning .NET 9 upgrades.
The real question: will Microsoft build first-party fluent validation into ASP.NET Core? History suggests they prefer minimal frameworks and leave rich validation to libraries. We'll see.