程序集安装失败(FileLoadException):ASP.NET项目Newtonsoft.Json绑定重定向问题求助
排查ASP.NET中Newtonsoft.Json FileLoadException的关键步骤
让我帮你一步步拆解这个问题,结合你的描述来看,核心矛盾点已经很明显了,咱们逐个解决:
1. 修复绑定重定向的版本不匹配问题
你当前的web.config绑定重定向里,newVersion设置为10.0.0.0,但你的项目实际依赖的是10.0.3版本——这直接导致CLR尝试加载10.0.0.0版本的程序集,可你的项目里根本没有这个版本,自然抛出FileLoadException。
修改web.config中的绑定重定向配置,把版本统一为你实际使用的10.0.3:
<dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion="0.0.0.0-10.0.3.0" newVersion="10.0.3.0" /> </dependentAssembly>
2. 统一解决方案内类库的NuGet版本
你提到引用了同解决方案里的类库项目,一定要检查这些类库的Newtonsoft.Json版本:
- 右键类库项目 → 「管理NuGet程序包」,查看它引用的Newtonsoft.Json版本
- 如果类库用的是低于10.0.3的版本,会导致整个解决方案里出现多版本依赖,CLR无法确定加载哪个,进而触发异常
- 建议把所有类库的Newtonsoft.Json都升级到10.0.3,和主项目保持一致
3. 彻底清理并重建项目
旧的编译缓存经常会搞事情,残留的旧版本程序集可能干扰加载:
- 右键解决方案 → 「清理解决方案」
- 手动删除每个项目下的
bin和obj文件夹(比IDE清理更彻底) - 右键解决方案 → 「重建解决方案」
4. 用程序集绑定日志深挖根源(进阶操作)
如果前面的步骤都没解决问题,可以用官方工具定位具体加载失败的细节:
- 打开命令提示符,运行
fuslogvw.exe(这是.NET自带的程序集绑定日志查看器) - 在工具里设置「日志绑定失败」或者「日志所有绑定」
- 重新启动你的ASP.NET项目,查看生成的日志,里面会详细记录CLR尝试加载哪个版本、从哪里加载,以及失败的具体原因
5. 确认NuGet包的恢复状态
有时候NuGet包可能没有正确下载到本地:
- 右键解决方案 → 「还原NuGet包」
- 检查项目根目录的
packages.config(旧项目)或者*.csproj文件(SDK风格项目),确保Newtonsoft.Json的版本确实是10.0.3
内容的提问来源于stack exchange,提问作者bugged87
相关产品推荐
相关产品推荐

