自2017年5月30日起,我的ASP.NET核心代码在Startup.cs
中public IServiceProvider ConfigureServices(IServiceCollection services)
{
// Add services to the collection.
services.AddMvc();
}
抛出异常如下:
启动应用程序时发生错误。 KeyNotFoundException:字典中没有给定的键。
KeyNotFoundException:字典中没有给定的键。 System.Collections.Generic.Dictionary.get_Item(TKey key) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(串 依赖) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(串 依赖) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(串 依赖) Microsoft.AspNetCore.Mvc.Internal.DefaultAssemblyPartDiscoveryProvider + CandidateResolver.ComputeClassification(串 依赖) 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 服务) Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection 服务) Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddMvc(IServiceCollection 服务)MyWebApiProject.Startup.ConfigureServices(IServiceCollection 在Startup.cs中的服务) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection 服务) 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" />
答案 0 :(得分:29)
我遇到了同样的问题。解决此问题的选项在此处列出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();
答案 1 :(得分:2)
我们几天前也面临同样的问题。
我们也注意到我们和你们都在使用AspNetCore 1.1(相当旧的版本)。
在预感中,我们更新到最新版本(2.1)并解决了我们的问题。
答案 2 :(得分:0)
我们也面临同样的问题。这就是我们将问题隔离到以下几点: 1.重建旧版本的代码会导致对构建工件中的XXXXX.deps.json进行更改。
"compilationOptions": {
"defines": [
"TRACE",
"DEBUG",
"NET461"
],
成为
"compilationOptions": {
"defines": [
"TRACE",
"DEBUG",
"NETFRAMEWORK",
"NET461"
],
并且
"HealthBizModel/1.0.0": {
"runtime": {
"HealthBizModel.dll": {}
}
},
"HealthBizService/1.0.0": {
"dependencies": {
"HealthBizModel": "1.0.0"
},
成为(依赖部分打破了它)
"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"
},
有趣的是,我们发现如果我们回滚第二段,删除依赖项,Web应用程序启动并运行完全正常。所以如果你在紧急情况下这个
进一步解决尝试: - 从受影响的项目中清除未使用的依赖项(为1个版本工作但奇怪地再次失败) - 在代理池中添加了一个新的VS2017构建代理,并使用该代理构建:也没有更改。
我们还会尝试更多的想法,比如@Scott Willis升级到dotnet core 2.0
干杯,
标记
答案 3 :(得分:0)
当我切换到另一台机器时遇到了这个问题。我的 global.json 文件损坏了,我需要找回它。这就是它所包含的全部内容。它指向的是兼容版本的 sdk :
{
"sdk": {
"version": "2.0.3"
}
}
替换 global.json 并构建它给了我一个缺少 sdk 错误并在命令提示符下运行以下命令确认它。
dotnet --info
我必须下载并安装 global.json 中提到的 .net core SDK 版本