, но .net core 3 жалуется на метод, создающий дополнительные копии сервисов и предлагающий мне внедрять сервисы зависимости в качестве параметров для «настройки».
На самом деле, ServiceCollection.BuildServiceProvider()
должен вызываться Хостом автоматически . Ваш код services.BuildServiceProvider();
создаст дублированного поставщика услуг, который отличается от поставщика по умолчанию, что может привести к несогласованным состояниям обслуживания. Смотрите ошибка, вызванная несколькими поставщиками услуг здесь .
Чтобы решить этот вопрос, настройте параметры с внедрением зависимости вместо создания поставщика услуг и последующего поиска службы.
Для ваших кодов, перепишите их, как показано ниже:
services.AddSingleton<IManageJwtAuthentication, JwtAuthenticationManager>();
services.AddOptions<JwtBearerOptions>(JwtBearerDefaults.AuthenticationScheme)
.Configure<IManageJwtAuthentication>((opts,jwtAuthManager)=>{
opts.TokenValidationParameters = new TokenValidationParameters
{
AudienceValidator = jwtAuthManager.AudienceValidator,
// More code here...
};
});
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer();