【发布时间】:2016-06-27 11:52:45
【问题描述】:
我收到以下错误,但仅限于生产环境。在本地开发环境中,应用程序运行没有问题。
我的应用程序中没有任何地方引用 Json 版本 6.0.0
更新:我可以通过 PUBLISHING (VS2015) 到本地驱动器并在本地运行 approot/web.cmd 在本地重现此错误。所以也许问题出在发布中。
问题:我该如何解决这个问题?
System.IO.FileNotFoundException:无法加载文件或程序集 'Newtonsoft.Json,版本=6.0.0.0,文化=中性, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。这 系统找不到指定的文件。文件名:'Newtonsoft.Json, 版本=6.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed'
在 Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(流 流)在 Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load() 在 Microsoft.Extensions.Configuration.ConfigurationBuilder.Add(IConfigurationProvider 提供者)在 Microsoft.Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile(IConfigurationBuilder configurationBuilder,字符串路径,布尔可选)在 Microsoft.AspNet.Hosting.WebApplication.Run(类型 startupType,字符串 [] args) 在 Microsoft.AspNet.Server.Kestrel.Program.Main(String[] 参数) --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute(程序集 程序集,字符串 [] 参数,IServiceProvider 服务提供者)在 Microsoft.Dnx.ApplicationHost.Program.c__DisplayClass3_0.b__0() 在 System.Threading.Tasks.Task`1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute()=== 预绑定状态信息 === LOG: DisplayName = Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed (完全指定)日志:Appbase = file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/ 日志:初始 PrivatePath = NULL 调用程序集:(未知)。 === LOG:此绑定在默认加载上下文中开始。 LOG:未找到应用程序配置文件。 LOG:使用主机配置文件:LOG: 使用来自的机器配置文件 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config。 LOG:后策略参考:Newtonsoft.Json,Version=6.0.0.0, 文化=中性,PublicKeyToken=30ad4fe6b2a6aeed 日志:融合是 托管。检查主机关于这个程序集。日志:尝试主机组装商店 使用程序集 newtonsoft.json,版本=6.0.0.0,文化=中性, publickeytoken=30ad4fe6b2a6aeed,处理器架构=x86。日志:尝试 使用程序集 newtonsoft.json,版本 = 6.0.0.0,托管程序集存储, 文化=中性,publickeytoken=30ad4fe6b2a6aeed, 处理器架构=msil。日志:尝试使用程序集托管程序集存储 newtonsoft.json,版本=6.0.0.0,文化=中性, publickeytoken=30ad4fe6b2a6aeed。警告:主机程序集存储不 包含此程序集。日志:尝试下载新 URL file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json.DLL。 日志:尝试下载新 URL file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json/Newtonsoft.Json.DLL。 日志:尝试下载新 URL file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json.EXE。 日志:尝试下载新 URL file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Newtonsoft.Json/Newtonsoft.Json.EXE。
【问题讨论】:
-
你是如何发布你的应用的?
Newtonsoft.Json由MVC使用。如果您想要快速修复,您可以下载Newtonsoft.Json NuGet pacakge并将其解压缩到file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin,dnx会在其中查找它。 -
我只是使用 VS 2015 发布应用程序,并手动复制到生产环境。所以,是的,在解决这个问题之后,这就是我想出的解决问题的补丁,但我不应该这样做......在我的开发环境中,我不必这样做。如果 Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider 需要 Json,它会打包 Json 并去。
-
在将 DLL 复制到 BIN 文件夹时,该错误消失了,但我现在得到错误,说找不到 JSON :( 我认为这可能是环境中的问题,因为正如我所说,我可以在DEV环境中运行项目而没有错误。
-
您是否尝试使用
dnu publish命令创建包?我不认为VS 2005打包依赖项。或者运行dnu restore来恢复生产环境中的依赖关系,如果你复制你的project.json
标签: json.net asp.net-core asp.net-core-mvc asp.net-core-1.0