Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При использовании FromKeyedServicesAttribute для указания внедренной службы с ключом может быть передана неправильная служба.
Прежнее поведение
Ранее, когда служба с ключами была предназначена для внедрения в качестве параметра в конструкторе служб с помощью и FromKeyedServicesAttribute соответствующей ключевой службы (в следующем примере) не была зарегистрирована в качестве ключевой службы, но service1 зарегистрирована как тип службы, не относящийся к ключу (IServiceв следующем примере), служба, не являющаяся ключом, была введена вместо того, чтобы вызвать исключение.
public MyService([FromKeyedServices("service1")] IService service1, ...
Новое поведение
Начиная с .NET 9, InvalidOperationException возникает при FromKeyedServicesAttribute использовании, и указанная служба ключей не найдена. Это поведение соответствует другим случаям, когда запрошенная служба не найдена из-за отсутствия регистрации.
Представленные версии
Обслуживание .NET 9 RC 1 и 8.0.9
Тип критического изменения
Причина изменения
Это изменение добавляет недостающую логику проверки для обнаружения ошибок конфигурации службы. Эта проблема возникла при добавлении функции службы с ключом в версии 8.0.
Рекомендуемое действие
Если FromKeyedServicesAttribute используется, убедитесь, что соответствующая служба зарегистрирована в качестве ключевой службы, например с помощью IServiceCollection.AddKeyedScoped(), IServiceCollection.AddKeyedSingleton()или IServiceCollection.AddKeyedTransient().
Исправление также было сохранено в .NET 8.0.9, поэтому как .NET 8, так и .NET 9 имеют одинаковое поведение. Если приложение зависит от старого поведения, параметр функции был добавлен для .NET 8.0.9 (но не .NET 9).Microsoft.Extensions.DependencyInjection.AllowNonKeyedServiceInject Установите переключатель, чтобы true сохранить старое поведение.