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

.NET 4.7.2升级后IdentityModel v3.6.1编译错误求助

解决.NET 4.7.2升级后IdentityModel v3.6.1的System.Net.Http引用冲突问题

我之前也踩过这个版本兼容的坑,咱们来一步步理清楚原因和解决办法:

问题根源

.NET Framework 4.7.2对System.Net.Http的集成逻辑和4.7.1不一样——从4.7.2开始,这个程序集被更深度地整合进框架本身。而你用的IdentityModel v3.6.1是针对旧版.NET编译的,它依赖的是System.Net.Http 4.0.0.0版本。虽然你项目里引用了4.3.3的NuGet包,但编译器和运行时在绑定程序集的时候,会因为4.7.2的框架集成特性,优先寻找系统自带的版本,最终导致版本不匹配,触发CS0012错误。

另外,在.NET 4.7+版本中,NuGet包的System.Net.Http和框架自带的版本本来就容易出现绑定冲突,这算是个常见的版本兼容坑。

可行的解决方法

方法1:添加程序集绑定重定向

这是最直接的解决方案,强制让运行时把对4.0.0.0版本的请求重定向到你项目里引用的4.3.3版本。在项目的App.config(桌面项目)或Web.config(Web项目)中添加以下配置:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.3.0" newVersion="4.3.3.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

添加完成后,清理项目并重新生成,一般就能解决这个编译错误。

方法2:升级IdentityModel到兼容版本

IdentityModel v3.6.1是比较老的版本了,后续的v3.x补丁版本以及v4+版本都已经修复了.NET 4.7.2的兼容性问题。你可以打开NuGet包管理器,搜索IdentityModel,选择合适的版本进行更新(如果升级到v4版本,注意部分API有变更,需要调整代码适配)。

方法3:调整System.Net.Http的引用方式

如果上面两种方法都没效果,可以试试:

  • 先卸载NuGet中的System.Net.Http包,然后通过“添加引用-程序集-框架”路径,重新添加.NET Framework自带的System.Net.Http引用。
  • 打开项目的.csproj文件,检查是否存在重复的System.Net.Http引用条目,或者版本冲突的配置,清理掉多余的内容后重新加载项目。

额外提醒

如果是Web项目,还要注意IIS运行环境是否存在程序集版本冲突的情况,但大部分情况下,程序集绑定重定向就能解决这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:32:25