【问题标题】:ASP.NET MVC 4 WebAPI PostAsJsonAsync Newtonsoft.Json errorASP.NET MVC 4 WebAPI PostAsJsonAsync Newtonsoft.Json 错误
【发布时间】:2015-04-26 08:04:02
【问题描述】:

在我的 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

但还是不行。 有谁知道为什么会出错?

【问题讨论】:

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


    【解决方案1】:

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

    Update-Package Newtonsoft.Json -Version 4.5.11
    

    如果这未能告诉您某些其他包需要更新版本的 JSON.NET,那么您将需要通过升级您正在使用且依赖于 JSON.NET 4.5 的过时库来解决此冲突

    【讨论】:

    • 我得到参数集无法使用指定的命名参数解析。在 line:1 char:15 + Update-Package
    • 抱歉,我打错了,请去掉 -Reinstall 参数 - 我已经更新了我的答案。
    • 更新包:将“Newtonsoft.Json 6.0.8”更新为“Newtonsoft.Json 4.5.11”失败。找不到与“Newtonsoft.Json 4.5.11”兼容的“WebGrease、Microsoft.AspNet.WebApi.Client”版本。在 line:1 char:15 + Update-Package
    • 是的,正如我所说,您需要更新您在项目中使用的旧包,这取决于 JSON.NET 的旧版本
    • 我删除了 JSON.NET 包并安装了在我的项目中使用的旧版本....谢谢...
    【解决方案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>
    

    【讨论】:

    • 我的 web.config 中存在
    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2013-06-12
    • 2012-10-04
    相关资源
    最近更新 更多