Мне нужно запустить два промежуточных ПО для всех моих конечных точек, но те, которые находятся в /accounts/*.
Я использую это в ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddControllers();
}
, и метод настройки выглядит следующим образом:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IUserService userService)
{
app.UseCors(builder => builder
//.AllowAnyOrigin()
.SetIsOriginAllowed((host) => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
app.UseRouting();
app.UseAuthentication();
//THIS IS WHAT I JUST ADDED TO SUPPORT THE BRANCHING OF ROUTES
app.MapWhen(context =>
{
return !context.Request.Path.StartsWithSegments("/accounts");
}, appBuilder =>
{
appBuilder.UseMiddleware<TenantProviderMiddleware>();
appBuilder.UseMiddleware<UserClaimsBuilderMiddleware>();
});
//app.UseMiddleware<TenantProviderMiddleware>();
//app.UseMiddleware<UserClaimsBuilderMiddleware>();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<VehicleHub>("/vehicle-hub");
endpoints.MapControllers();
});
}
Но я получаю следующую ошибку:
System.InvalidOperationException: запрос достиг конца конвейера без выполнения конечной точки: 'WebAPI.Controllers.VehiclesController .Get (WebApi) '. Пожалуйста, зарегистрируйте EndpointMiddleware, используя 'IApplicationBuilder.UseEndpoints (...)' при использовании маршрутизации.
Из ошибки я понимаю, что должен использовать UseEndpoints вместо UseMiddleware в методе MapWhen, но не могу сделайте все правильно.
Как мне зарегистрировать промежуточное программное обеспечение?