【问题标题】:ASP.NET Core 1.0 RC1-Update1, System.IO.FileNotFoundException: Could not load file or assembly > 'Newtonsoft.JsonASP.NET Core 1.0 RC1-Update1,System.IO.FileNotFoundException:无法加载文件或程序集 > 'Newtonsoft.Json
【发布时间】: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.JsonMVC 使用。如果您想要快速修复,您可以下载Newtonsoft.Json NuGet pacakge 并将其解压缩到file:///C:/inetpub/_ALPHA/approot/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bindnx 会在其中查找它。
  • 我只是使用 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


【解决方案1】:

更新:我认为这与此处描述的错误 (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。

我希望微软能修复这个错误,因为您应该能够将 ASP.NET Core 应用程序添加到现有解决方案中而不会出现任何问题,不幸的是目前情况并非如此,

【讨论】:

    【解决方案2】:

    新的Newtonsoft.Json 9.0.1 已发布,支持 ASP.NET Core。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2023-02-07
      相关资源
      最近更新 更多