Так что в Web API 2 в .net framework 4.7.1, если у вас есть фильтр, который обрабатывает исключение, определяется следующим образом:
public sealed class RequestExceptionFilter : ExceptionFilterAttribute..
И в WebApiConfig:
config.Filters.Add(new MyAuthorizationFilter());
config.Filters.Add(new RequestExceptionFilter());
если бы какое-либо исключение произошло в MyAuthorizationFilter
, оно было бы поймано в RequestExceptionFilter
.
В ядре .net 2.1 у меня есть следующее:
services.AddMvc(options =>
{
options.Filters.Add(new MyExceptionFilter());
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddAuthentication("Basic").AddScheme<AuthenticationSchemeOptions, UserAuthenticator>("Basic", null)
// configure DI for application services
services.AddScoped<IUserAuthenticator, UserAuthenticatorHandler>();
И у меня есть следующий обработчик:
public sealed class UserAuthenticator: AuthenticationHandler<AuthenticationSchemeOptions>
Теперь, если я сгенерирую исключение в protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
, который является методом UserAuthenticator
, сервер вернет Внутреннюю ошибку сервера и пропустит обработку исключения.
Можно ли распространить его на фильтр исключений?