web-dev-qa-db-fra.com

KeyNotFoundException dans Startup ConfigureServices AddMvc ()

Depuis le 30.05.2018 mon code ASP.NET Core dans Startup.cs

public IServiceProvider ConfigureServices(IServiceCollection services)
{
   // Add services to the collection.
   services.AddMvc();
}

jeter une exception comme ci-dessous:

Une erreur s'est produite lors du démarrage de l'application . KeyNotFoundException: la clé donnée n'était pas présente dans le dictionnaire.

KeyNotFoundException: la clé donnée n'était pas présente dans le dictionnaire . System.Collections.Generic.Dictionary.get_Item (clé TKey) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification (chaîne Dépendance) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification (chaîne Dépendance) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification (chaîne Dépendance) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification (chaîne Dépendance) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver + d__4.MoveNext () System.Linq.Enumerable + d__17.MoveNext () System.Linq.Enumerable + WhereSelectEnumerableIterator.MoveNext () Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager (IServiceCollection Services) Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore (IServiceCollection Services) Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc (services IServiceCollection ) MyWebApiProject.Startup.ConfigureServices (services IServiceCollection ) Dans Startup.cs System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices (IServiceCollection Services) Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices () Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication ()

csproj

<TargetFramework>net461</TargetFramework>

<ItemGroup>
<PackageReference Include="Autofac" Version="4.6.2" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.1.0" />
<PackageReference Include="EntityFramework" Version="6.2.0" />
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.1" />
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Server" Version="0.2.0-preview2-22683" />
<PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="1.0.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="5.1.5" />
<PackageReference Include="Microsoft.VisualStudio.SlowCheetah" Version="3.0.61" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.4.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="1.0.0" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.1.5" />
<PackageReference Include="System.Net.Http" Version="4.3.3" />

13
radnarock

Je souffrais des mêmes problèmes. Les options pour y remédier sont décrites ici https://github.com/aspnet/Home/issues/3132

Pour moi, je choisis l'option d'ajouter ApplicationPartManager avant d'ajouter MVC, par exemple.

var manager = new ApplicationPartManager();
manager.ApplicationParts.Add(new AssemblyPart(typeof(Startup).Assembly));

services.AddSingleton(manager);
services.AddMvc();

La source

28
Scott Willis

Nous étions également confrontés au même problème depuis quelques jours.

Nous avons également remarqué que nous utilisions AspNetCore 1.1 (une version assez ancienne) avec vous.

Sur un pressentiment, nous avons mis à jour à la dernière (2.1) et cela a résolu notre problème.

2
Zak

Nous sommes également confrontés au même problème. Voici à quel point nous avons isolé le problème de la manière suivante: La reconstruction d'une version antérieure du code entraîne une modification de XXXXX.deps.json dans les artefacts de génération. 

 "compilationOptions": {
"defines": [
  "TRACE",
  "DEBUG",
  "NET461"
],

Est devenu 

"compilationOptions": {
"defines": [
  "TRACE",
  "DEBUG",
  "NETFRAMEWORK",
  "NET461"
],

Et 

      "HealthBizModel/1.0.0": {
    "runtime": {
      "HealthBizModel.dll": {}
    }
  },
  "HealthBizService/1.0.0": {
    "dependencies": {
      "HealthBizModel": "1.0.0"
    },

Devenu (la section des dépendances est ce qui le casse)

  "HealthBizModel/1.0.0": {
    "dependencies": {
      "System.Runtime.Reference1": "4.0.20.0",
      "System.Net.Primitives.Reference1": "4.0.10.0",
      "System.Net.Http.WebRequest": "4.0.0.0"
    },
    "runtime": {
      "HealthBizModel.dll": {}
    }
  },
  "HealthBizService/1.0.0": {
    "dependencies": {
      "HealthBizModel": "1.0.0",
      "System.Text.Encoding.Reference1": "4.0.10.0"
    },

Et, chose intéressante, nous avons constaté que si nous annulions ce deuxième segment en supprimant les dépendances, l’application Web démarrait et fonctionnait parfaitement. Donc, si vous êtes dans une situation d’urgence, 

Autres tentatives de résolution: - Nettoyer les dépendances inutilisées des projets affectés (travail pour 1 génération mais échec bizarre pour commencer - Ajout d'un nouvel agent de génération VS2017 au pool d'agents et construction avec celle-ci: n'a également pas changé.

Nous allons également essayer quelques réflexions supplémentaires, telles que la mise à niveau de @Scott Willis vers le noyau 2.0 de Dotnet.

À votre santé,

Marque

0
Mark Conway