【问题标题】:FileLoadException was unhandled by user code用户代码未处理 FileLoadException
【发布时间】:2017-01-30 21:54:01
【问题描述】:

我正在为我的 MVC-4 应用程序设置 API,当我在 Globals.asax.cs 中取消注释此行时:

WebApiConfig.Register(GlobalConfiguration.Configuration);

我在开始备份项目时收到此异常:

An exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll but was not handled in user code

Additional information: Could not load file or assembly 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

我该怎么办?


更新 1(截图)

据我所知,JSON.Net 看起来安装正确。


更新 2

当在 Globals.Asax 中注释掉 API 路由时,JSON.Net 实际上似乎可以工作。这不会引发任何错误:

public ActionResult Index()
{
     var foo = Newtonsoft.Json.JsonSerializer.Create();
     return View();
}

Visual Studio 仅在取消注释此行时才会抱怨:

WebApiConfig.Register(GlobalConfiguration.Configuration);

【问题讨论】:

  • 不能解决您的问题,但请考虑更新到 Web API 2.12。
  • 不用担心这个问题,从nuget包管理器安装JSON.NET包就可以了。

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案1】:

这也发生在我今天。似乎 json.net 有更新(现在是 6.0.3 版),导致 nuget 在构建后下载最新版本。但是,当依赖于其他库时,对旧 json.net 库的引用可能不会更新。

解决方案:手动打开解决方案窗口的管理 nuget 包并卸载旧版本的 json.net。然后获取最新版本并安装所有需要的项目。这解决了你对我的确切错误......

-- 编辑--
好的,所以我发现这个解决方案在本地对我有用,但是远程这并没有解决我的问题。似乎有一些来自其他库的旧依赖项硬引用了 json.net 的 4.5.0.0 版本。 Stackoverflow.com 上的更多主题提供以下解决方案。

将此程序集绑定重定向添加到您的 web.config 文件:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
                <bindingRedirect oldVersion="1.0.0.0-4.5.0.0" newVersion="6.0.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

【讨论】:

  • 天哪。你搞定了。谢谢!!
  • 难以置信。我们如何继续让微软摆脱这样的麻烦? #smh
  • 谢谢!现在是 2015 年 7 月,我不得不更改为 oldVersion="1.0.0.0-6.0.0.0" 和 newVersion="7.0.0.0"。
  • 现在是 2016 年 7 月,显然它对我有用。谢谢!
  • 2017 年快乐! oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"
【解决方案2】:

很可能Newtonsoft.Json DLL 没有正确部署。

确保您的(IIS / 项目)bin 文件夹中有 Newtonsoft.Json DLL。
或者,如果您打算在多个项目中使用该 DLL,也可以将该 DLL 安装到 GAC。

【讨论】:

  • 就是这样,NuGet 包管理器显示它已安装,并且参考中列出的路径看起来指向我的文件系统上的 DLL。我会用截图更新我的帖子。
【解决方案3】:

您似乎没有安装/引用 Newtonsoft.Json。 Web API 依赖于此,在您解决此依赖关系之前无法正常工作。您可以通过NuGet 安装它。

【讨论】:

    【解决方案4】:

    只需从 bin 文件夹中删除您的 Newtonsoft.Json dll,然后打开 package.config 文件并从那里删除您的 Newtonsoft.Json 条目,然后通过命令重新安装您的 Newtonsoft.Json,但如果您遇到更新版本的问题,请不要安装更新版本version 查找旧版本命令

    like Install-Package Newtonsoft.Json -Version 6.0.8 现在 Install-Package Newtonsoft.Json -Version 7.0.1 也是可用的,但我建议你安装 6.0.8 版本它的工作

    【讨论】:

      猜你喜欢
      • 2014-07-08
      • 2013-12-28
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多