ASP.NET MVC 4 WebAPI PostAsJsonAsync Newtonsoft.Json错误

时间:2015-04-26 08:04:03

标签: .net json asp.net-mvc vb.net asp.net-web-api

在我的MVC 4 Web API项目中停止工作。它找不到Newtonsoft.Json。 运行此代码后:

 Dim response As HttpResponseMessage = MyHttpClient.PostAsJsonAsync("Api/Test", MyObject).Result

我收到邮件错误:

  

System.Net.Http.Formatting.dll中发生未处理的“System.IO.FileLoadException”类型异常   附加信息:无法加载文件或程序集'Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

我知道MS现在正在使用它作为默认的JSON序列化程序 - 并且它被引用了。我试图从NuGet更新Newtonsoft.Json,但我找不到它;我找到了“Json.Net”。所以我使用包管理器控制台重新安装

Update-Package Newtonsoft.Json –Reinstall

但仍然无效。 有谁知道为什么会出错?

2 个答案:

答案 0 :(得分:2)

您似乎正在使用一些依赖于旧版JSON.NET的过时库。您可以尝试安装它的特定版本:

Update-Package Newtonsoft.Json -Version 4.5.11

如果这无法告诉您某个其他软件包需要更新版本的JSON.NET,那么您需要通过升级您正在使用的过时库来解决此冲突,这取决于JSON.NET 4.5

答案 1 :(得分:2)

尝试在<runtime><assemblyBinding>内的web.config文件中添加此部分:

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
      </dependentAssembly>