启动时的KeyNotFoundException配置服务AddMvc()

rad*_*ock 14 c# asp.net-core

从30.05.2018开始,我的ASP.NET核心代码在Startup.cs中

public IServiceProvider ConfigureServices(IServiceCollection services)
{
   // Add services to the collection.
   services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)

抛出异常如下:

启动应用程序时发生错误.KeyNotFoundException:给定的键不在字典中.

KeyNotFoundException:给定的键不在字典中.System.Collections.Generic.Dictionary.get_Item(TKey key)Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(string dependency)Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(string dependency)Microsoft.AspNetCore .Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(字符串依赖)Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(字符串依赖)Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver + d__4.MoveNext()系统. Linq.Enumerable + d__17.MoveNext()System.Linq.Enumerable + WhereSelectEnumerableIterator.MoveNext()Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection services)Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcC ore(IServiceCollection服务)Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc(IServiceCollection services)Startup.cs中的MyWebApiProject.Startup.ConfigureServices(IServiceCollection服务)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" />
Run Code Online (Sandbox Code Playgroud)

小智 32

我遇到了同样的问题.解决此问题的选项在此处列出https://github.com/aspnet/Home/issues/3132

对我来说,我选择在添加MVC之前添加ApplicationPartManager,例如.

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

services.AddSingleton(manager);
services.AddMvc();
Run Code Online (Sandbox Code Playgroud)

资源