找不到方法:'Void Newtonsoft.Json.Serialization.DefaultContractResolver.set_IgnoreSerializableAttribute(Boolean)'(webapi和PCL)

时间:2015-01-07 05:03:25

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

this question类似,后者被标记为重复(因此我无法直接回复)。

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

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

2 个答案:

答案 0 :(得分:39)

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

解决方案只是进入我的PCL项目的参考文献,并为Newtonsoft.Json.dll关闭“Copy local”

答案 1 :(得分:-1)

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

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