我收到以下错误,但仅在生产环境中。 在本地开发环境中,应用程序运行没有问题。
我的应用程序中没有任何地方引用 Json 版本 6.0.0
更新:我可以通过将(VS2015)发布(VS2015)到本地驱动器并在本地运行approot/web.cmd来在本地重现此错误。 所以也许问题出在发布中。
问:如何解决此问题?
System.IO.FileNotFoundException:无法加载文件或程序集 'Newtonsoft.json, version=6.0.0.0, culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。这 系统找不到指定的文件。文件名: 'Newtonsoft.Json, 版本=6.0.0.0,区域性=中性,公钥令牌=30ad4fe6b2a6aeed'
在 Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(Stream 流)在 Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load() 在 Microsoft.Extensions.Configuration.ConfigurationBuilder.Add(IConfigurationProvider 提供者)在 Microsoft.Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile(IConfigurationBuilder 配置生成器,字符串路径,布尔可选)在 Microsoft.AspNet.Hosting.WebApplication.Run(Type startupType, String[] args) at Microsoft.AspNet.Server.Kestrel.Program.Main(String[] 参数) --- 从引发异常的先前位置的堆栈跟踪结束 --- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(Assembly assembly, String[] args, IServiceProvider serviceProvider) at Microsoft.Dnx.ApplicationHost.Program.<>c__DisplayClass3_0.b__0() at System.Threading.Tasks.Task'1.InnerInvoke() at System.Threading.Tasks.Task.Execute()=== 预绑定状态信息 === 日志:显示名称 = Newtonsoft.json,版本=6.0.0.0,区域性=中性,公钥令牌=30ad4fe6b2a6aeed (完全指定)日志:应用库 = file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/ 日志:初始专用路径 = 空 调用程序集:(未知)。 === 日志:此绑定在默认加载上下文中启动。日志:未找到应用程序配置文件。日志: 使用主机配置文件: 日志: 使用来自的计算机配置文件 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. 日志:策略后参考:Newtonsoft.Json,版本=6.0.0.0, Culture=中性,PublicKeyToken=30ad4fe6b2a6aeed LOG:Fusion is 托管。检查主机有关此程序集的信息。日志:试用主机程序集存储 使用程序集 Newtonsoft.json,版本=6.0.0.0,区域性=中性, 公钥令牌=30AD4FE6B2A6AEED,处理器架构=x86。日志:尝试 使用程序集 NewtonSoft.json(版本=6.0.0.0)托管程序集存储区, culture=中立,公钥令牌=30AD4FE6B2A6aeEd, 处理器体系结构=MSIL。日志:尝试使用程序集的宿主程序集存储 Newtonsoft.json, version=6.0.0.0, culture=neutral, 公钥令牌=30AD4FE6B2A6AEED。WRN:主机程序集存储区不 包含此程序集。日志:正在尝试下载新网址 file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json.DLL。 日志:正在尝试下载新网址 file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json/Newtonsoft.Json.DLL。 日志:正在尝试下载新网址 file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json.EXE。 日志:正在尝试下载新网址 file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json/Newtonsoft.Json.EXE。
New Newtonsoft.Json 9.0.1 已发布,支持 ASP.NET Core。
更新:我认为这与此处描述的错误(https://github.com/aspnet/Tooling/issues/45)有关,该错误与在解决方案中创建项目的顺序有关。 在本例中,我从 .NET 4.5.1 类库开始,然后添加了 ASP.NET Core 1.0 WebAPI 项目。 出于某种原因,每当我添加类库时,Json.NET 都会添加到项目中,但版本号为 1.0。
我的解决方案是从头开始解决方案。 这次我从 WebAPI 项目开始,然后添加到类库中,然后引用 WebAPI 项目中的类库,现在它显示 Json.NET 8.0.2。
我希望Microsoft修复此错误,因为您应该能够将 ASP.NET Core应用程序添加到现有解决方案中而不会出现任何问题,不幸的是,目前情况并非如此,