将对象转换为HttpContent时运行报错:无法加载Newtonsoft.Json程序集
嘿,这问题我见太多了——就是Newtonsoft.Json的版本冲突搞的鬼!编译能过是因为编译时找到了对应引用,但运行时系统找不到要求的6.0.0.0版本,给你几个实用的解决办法:
检查并统一NuGet引用版本
右键你的项目→「管理NuGet程序包」,看看当前安装的Newtonsoft.Json版本是多少。如果不是6.0.0.0,你有两个选择:要么直接安装6.0.0.0版本(用NuGet搜索指定版本安装),要么用「程序集绑定重定向」让运行时用现有版本替代6.0.0.0。添加程序集绑定重定向(最推荐)
打开项目的App.config或Web.config,在<configuration>节点内添加以下配置,把newVersion改成你实际安装的版本号(比如13.0.1.0):<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="你的实际版本号" /> </dependentAssembly> </assemblyBinding> </runtime>这个配置会告诉CLR:不管请求哪个0到6.0.0.0之间的版本,都用你指定的新版本来替代。
修复NuGet包安装异常
如果怀疑是NuGet包没装到位,试试卸载后重新安装:# 先强制卸载 Uninstall-Package Newtonsoft.Json -Force # 安装指定版本,比如6.0.0.0 Install-Package Newtonsoft.Json -Version 6.0.0.0要是不确定版本,直接装最新稳定版就行,配合上面的绑定重定向一样能用。
检查输出目录的DLL版本
去项目编译后的bin文件夹里看看,Newtonsoft.Json.dll的版本是不是和你引用的一致。如果不一致,大概率是其他依赖项目引用了旧版本,导致复制到输出目录的是旧DLL——这时候要么统一所有项目的Newtonsoft.Json版本,要么用绑定重定向来覆盖。
另外说一句:你的代码逻辑(把JArray转成IEnumerable
内容的提问来源于stack exchange,提问作者Jyotsna

