3 votes

Obtention de l'erreur "can not access disposed object" pour builder.build() lors de la mise à jour de Visual Studio.

J'obtiens une erreur au démarrage de la session de débogage sur mon projet dot net core API, depuis que j'ai mis à jour Visual Studio à la dernière version 17.1.1. Voici le détail de l'exception, qui s'affiche dans la console. J'ai essayé de supprimer les dossiers temp, bin, obj mais rien n'a fonctionné. Quelqu'un a-t-il été confronté à un tel problème ou sait-il comment le résoudre ?

Exception non gérée. System.ObjectDisposedException : Impossible d'accéder à un objet disposé. Nom de l'objet : 'ConfigurationManager'. at Microsoft.Extensions.Configuration.ReferenceCountedProviderManager.AddProvider(IConfigurationProvider provider) at Microsoft.Extensions.Configuration.ConfigurationManager.AddSource(IConfigurationSource source) at Microsoft.Extensions.Configuration.ConfigurationManager.IConfigurationBuilder.Add(IConfigurationSource source) at Microsoft.AspNetCore.Builder.WebApplicationBuilder.<>c__DisplayClass25_0.b__2(HostBuilderContext context, IServiceCollection services) at Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider() at Microsoft.Extensions.Hosting.HostBuilder.Build() at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() at Program.$(String[] args) in Program.cs:ligne 40

2voto

kvanover Points 21

C'est parce que vous utilisez l'ancienne méthode pour obtenir les paramètres du gestionnaire de configuration, comme :

using (var serviceProvider = services.BuildServiceProvider())
{
...
}

Si vous supprimez ces lignes et utilisez simplement la configuration telle quelle avec

options = configuration.GetOptions<Object>("xxx");

cela fonctionnera

2voto

Ben Croughs Points 29

Nous avons également eu ce problème depuis le 8 mars. Il a été introduit avec la version 6.0.3, voir un post github à propos de ce problème : https://github.com/dotnet/aspnetcore/issues/40614

Pour l'instant, nous avons rétabli la version 6.0.2 (il s'agit d'une solution temporaire, j'espère trouver ce qui n'allait pas dès que possible).

pour les images docker :

FROM mcr.microsoft.com/dotnet/aspnet:6.0.2 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0.200 AS build
WORKDIR /src

si vous l'utilisez dans yml probablement aussi

utiliser dotnetversion

DotNetVersion: "6.0.200" instead of "6.0.x" 

6.0.200 est la version sdk du framework 6.0.2 https://dotnet.microsoft.com/en-us/download/dotnet/6.0

11/03/2022 voir également ceci https://github.com/dotnet/core/issues/7259 J'ai localisé le problème dans notre code et ajouté un exemple d'application pour le reproduire.

si nous regardons dans ce dépôt https://github.com/microsoft/ApplicationInsights-Kubernetes/blob/69f44c6ec3fda26d76a01836b851402e3f8a02ad/src/ApplicationInsights.Kubernetes/Extensions/ApplicationInsightsExtensions.cs

nous trouvons en effet le même morceau de code sur les autres réponses

enter image description here

0voto

Fazel Saeedi Points 11

J'ai été confronté à ce problème lorsque j'ai mis à jour mon SDK à la fois dans Docker et dans ma fenêtre 11.

mon sdk est : 6.0.3

mais je ne comprends pas pourquoi ce problème se produit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X