How to run ErrorHandlingMiddleware after FluentValidation?
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest)
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.IgnoreNullValues = true;
}).AddFluentValidation(fv =>
{
fv.RegisterValidatorsFromAssemblyContaining<LoginValidator>();
fv.RunDefaultMvcValidationAfterFluentValidationExecutes = false;
});
app.UseMiddleware<ErrorHandlingMiddleware>();
And in ErrorHandlingMiddleware
private static string HandleMessage(Exception exception)
{
var responseModel = exception switch
{
ValidationException validationException => new ErrorResponseModel
{
Type = ApiErrorType.Validation,
MainMessage = ErrorMessage.ValidationError,
Messages = validationException.Errors.Select(x => x.ErrorMessage)
},
AuthorizationException or AuthenticationException => new ErrorResponseModel
{
Type = ApiErrorType.Authorization, MainMessage = ErrorMessage.AuthorizationAuthenticationError
},
_ => new ErrorResponseModel {Type = ApiErrorType.Global, MainMessage = ErrorMessage.GlobalError}
};
return JsonSerializer.Serialize(responseModel);
}
So now after FluentValidation error ErrorHandlingMiddleware does not executed.