You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Function SDK引发Newtonsoft.Json程序集加载异常求助

解决Azure Functions中Newtonsoft.Json版本冲突问题

你遇到的是典型的程序集版本冲突问题——项目里的NuGet包对Newtonsoft.Json依赖版本不一致,导致运行时找不到匹配的版本。我来拆解问题并给出具体解决步骤:

问题根源分析

你安装的几个包对Newtonsoft.Json的依赖版本不兼容:

  • Microsoft.Azure.Devices.Shared 1.15.1 依赖Newtonsoft.Json 10.0.0.0
  • AzureFunctions.Autofac 3.0.7 则需要更高版本(比如你最初用的12.0.1)
    降级到10.0.1后,又触发了另一个包对12.0.1的依赖需求,陷入两难局面。

具体解决方案

方案1:使用程序集绑定重定向(最推荐)

这是.NET Framework解决版本冲突的标准方法,通过配置让运行时把对旧版本的请求重定向到你实际安装的版本。

  1. 打开项目的web.config文件(没有的话右键项目→添加→新建项→Web配置文件)
  2. 在<configuration>节点下添加以下配置:
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
      <!-- 把所有旧版本请求重定向到你要保留的版本,这里以12.0.1为例 -->
      <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.1.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

方案2:升级依赖包到兼容版本

尝试把Microsoft.Azure.Devices.Shared升级到支持Newtonsoft.Json 12.x的版本——去NuGet查看该包的更新日志,找一个既兼容.NET Framework 4.6,又依赖高版本Json.NET的版本,从根源上消除冲突。

方案3:对齐Azure Functions运行时默认版本

如果你用的是v1版Azure Functions(基于.NET Framework),它默认自带Newtonsoft.Json 9.0.1。可以尝试把项目的Json.NET版本降到9.0.1,看看是否能适配所有依赖包。不过这个方法可能限制其他包的使用,优先级低于前两个方案。

验证步骤

  1. 右键项目→清理,清除旧的编译文件
  2. 右键项目→生成,重新编译
  3. 本地运行Azure Functions,测试Twin实例创建和Json反序列化代码是否正常

最后提个小建议:以后安装NuGet包时,多看看包管理器的“依赖项”视图,提前排查版本冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:57:41