Résolution de la levée d’exceptions par un ServiceProvider supprimé
Lorsqu’un service est résolu après que le fournisseur de services a été supprimé, les méthodes affectées lèvent désormais une ObjectDisposedException au lieu de provoquer un interblocage.
Version introduite
6.0 RC 1
Comportement précédent
Auparavant, dans les rares cas où une application a résolu un service après la suppression du fournisseur de services, cela entraînait un interblocage.
Nouveau comportement
À compter de .NET 6, une ObjectDisposedException est levée lorsqu’un service est résolu une fois que le fournisseur de services a été supprimé et qu’il n’y a pas d’interblocage.
Type de changement cassant
Ce changement peut affecter la compatibilité source.
Raison du changement
Ce changement a été introduit pour résoudre le scénario d’interblocage.
Action recommandée
Interceptez ObjectDisposedException lors de l’appel de l’une des API affectées.
API affectées
- System.IServiceProvider.GetService(Type)
- Microsoft.Extensions.DependencyInjection.ISupportRequiredService.GetRequiredService(Type)
- Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider, Type)
- Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService<T>(IServiceProvider)