Postie.AspNetCore.FluentValidation 1.0.1

dotnet add package Postie.AspNetCore.FluentValidation --version 1.0.1
                    
NuGet\Install-Package Postie.AspNetCore.FluentValidation -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Postie.AspNetCore.FluentValidation" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Postie.AspNetCore.FluentValidation" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Postie.AspNetCore.FluentValidation" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Postie.AspNetCore.FluentValidation --version 1.0.1
                    
#r "nuget: Postie.AspNetCore.FluentValidation, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Postie.AspNetCore.FluentValidation@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Postie.AspNetCore.FluentValidation&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Postie.AspNetCore.FluentValidation&version=1.0.1
                    
Install as a Cake Tool

Postie.AspNetCore.FluentValidation

Turns FluentValidation failures into proper HTTP responses. An IExceptionHandler that maps FluentValidation.ValidationException to an RFC 9457 400 validation problem details response, with failure messages grouped by property. Part of Postiefree forever, MIT licensed.

dotnet add package Postie.AspNetCore.FluentValidation

Pairs naturally with Postie.Cqrs.FluentValidation (whose pipeline behaviors throw ValidationException before a handler runs), but works with anything that throws ValidationException — including MediatR validation behaviors.

Usage

This example maps endpoints with Postie.Cqrs.AspNetCore and validates with Postie.Cqrs.FluentValidation — but the handler itself needs neither; it catches ValidationException wherever it is thrown from.

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddPostie<CreateOrder>();
builder.Services.AddPostieValidation<CreateOrderValidator>();      // validation behaviors (Postie.Cqrs.FluentValidation)
builder.Services.AddPostieValidationExceptionHandler();            // ValidationException -> 400 problem details

var app = builder.Build();
app.UseExceptionHandler();   // required: the handler runs inside ASP.NET Core's exception middleware

app.MapCommand<CreateOrder, Order>("/orders")
   .ProducesValidationProblem();   // advertise the 400 now that something produces it

app.Run();

An invalid CreateOrder now returns:

{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "Customer": ["'Customer' must not be empty."]
  }
}

The handler writes the response directly via Results.ValidationProblem, so CustomizeProblemDetails hooks configured on AddProblemDetails do not run for these 400s.

Only ValidationException is handled; other exceptions flow to the rest of your exception-handling pipeline unchanged.

License

MIT. See LICENSE.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 93 7/22/2026
1.0.0 152 7/22/2026