You need to enable JavaScript to run this app. 升级至.NET 5.0后IIS托管程序报错,提示缺少指定版本Newtonsoft.Json程序集
优惠活动
大模型
产品
解决方案
定价
更多

升级至.NET 5.0后IIS托管程序报错,提示缺少指定版本Newtonsoft.Json程序集

项目异常场景

完成项目版本升级后,在IIS托管场景下运行出现故障。已尝试在API项目中引入Newtonsoft.Json依赖,操作后问题仍未解决。
异常日志可在Windows Server 2012 R2的事件查看器中查询,核心异常堆栈如下:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.

---> System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. The system cannot find the file specified.

File name: 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'

异常对应的界面为英文系统下的事件查看器报错截图,内容与上述堆栈信息一致。

排查与解决步骤
  • 依赖版本一致性校验:排查项目全依赖链路中所有NuGet包对Newtonsoft.Json的版本要求,确认是否存在上层依赖强引用12.0.0.0版本,但项目内安装的Newtonsoft.Json版本不匹配的情况。需安装与公钥令牌30ad4fe6b2a6aeed匹配的官方12.0.0.0版本Newtonsoft.Json,消除多版本引用冲突。
  • 发布文件完整性校验:项目发布后检查IIS站点根目录下的bin文件夹,确认是否存在对应版本的Newtonsoft.Json.dll文件。若文件缺失,需排查项目配置中是否将该dll的复制输出属性设置为「不复制」、打包流程是否存在规则过滤了该程序集的输出。
  • 程序集绑定重定向配置:在API项目对应的web.config中添加绑定重定向规则,将所有对Newtonsoft.Json不同版本的引用统一指向实际部署的匹配版本,参考配置如下:
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
  • 运行权限校验:确认IIS对应应用程序池的运行身份,对站点根目录下的bin文件夹具备读取权限,避免因权限不足导致程序集加载失败。
  • 全局程序集缓存清理:检查服务器全局程序集缓存(GAC)中是否存在Newtonsoft.Json的冗余版本,清理与项目要求不匹配的残留程序集,避免程序集加载顺序错乱。

内容的提问来源于stack exchange,提问作者Sras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 16:27:04