【问题标题】:Method not found: 'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)' (webapi and PCL)找不到方法:'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)'(webapi 和 PCL)
【发布时间】:2015-01-07 05:03:25
【问题描述】:

类似于this question,被标记为重复(所以我无法直接回答)。

我有一个 webapi 项目,它引用了一个 PCL 项目。 我间歇性地收到此 DefaultContractResolver 错误。

我已经尝试了其他问题中的所有故障排除步骤,主要涉及卸载和重新安装 nuget 包。没有帮助。

【问题讨论】:

    标签: asp.net-web-api json.net portable-class-library


    【解决方案1】:

    对我来说问题的根本原因是我的 webapi 项目和我的 PCL 项目都引用了 Newtonsoft.Json.dll。在 Visual Studio 构建中似乎存在某种竞争条件,因此如果最后构建 PCL 项目,它会将其可移植版本的 Newtonsoft.Json.dll 复制到我的 webapi 项目的 \bin 目录中。

    解决方案只是进入我的 PCL 项目的参考,然后关闭 Newtonsoft.Json.dll 的“复制本地”

    【讨论】:

    • 非常感谢!我正要把我的电脑扔出窗外
    • OMG - 这完全有道理,而且我已经有一段时间没有想到了!谢谢 dbruning - 完全让我免于今晚浪费大量时间!
    • 终于有东西了,谢谢伙计;我忘记了使用 install/unistall nuget packages 方法损失了多少小时。
    • 将“复制本地”设置为“假”以使可移植项目有效。
    • 今天阻止我提交 Hari Kari - 你这个明星,也解决了 Automapper 问题! PCL 与完整的 .net 4.5 的问题已经困扰了我 2 年多。感激不尽!
    【解决方案2】:

    另外两件事可能会有所帮助:

    1. 删除包含旧版本 NewtonSoft dll 的临时 ASP.NET 文件(位于“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”中)。
    2. 删除 NuGet 包文件夹,清除 NuGet 包缓存(“管理 NuGet 包”->“设置”->“NuGet 包管理器”->“常规”->“清除包缓存”,然后恢复包

    【讨论】:

    • 谢谢。我们有一个 Newtonsoft 版本问题,我们无法解决,因为该网站中有预期的版本,但删除 :C\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files 中的文件解决了它。先生帮了大忙
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多