To create a global interceptor for MVC controllers, implement IGlobalValidationInterceptor and register it as a transient service in your dependency injection container.
Note that the method signatures for MVC use ActionExecutingContext.
// Registration
builder.Services.AddTransient<IGlobalValidationInterceptor, CustomGlobalValidationInterceptor>();
public class CustomGlobalValidationInterceptor : IGlobalValidationInterceptor
{
public Task<IValidationContext?> BeforeValidation(ActionExecutingContext actionExecutingContext, IValidationContext validationContext, CancellationToken cancellationToken = default)
{
// Return a custom `IValidationContext` or null.
return Task.FromResult<IValidationContext?>(null);
}
public Task<ValidationResult?> AfterValidation(ActionExecutingContext actionExecutingContext, IValidationContext validationContext, ValidationResult validationResult, CancellationToken cancellationToken = default)
{
// Return a custom `ValidationResult` or null.
return Task.FromResult<ValidationResult?>(null);
}
}