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

使用服务引用时加载System.ServiceModel版本错误的问题排查

解决netstandard2.0项目中System.ServiceModel.Http版本不匹配问题

遇到的问题是项目安装了4.4.4版本的System.ServiceModel.Http,但运行时系统尝试加载不存在的4.1.2.3版本,以下是可行的解决办法:

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

在项目的app.config(或Web项目的web.config)中添加程序集绑定重定向配置,让CLR自动将对4.1.2.3版本的请求重定向到已安装的4.4.4版本:

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

注意:如果是netstandard2.0类库项目,需要确保引用该类库的宿主项目(如控制台、Web项目)的配置文件中包含上述重定向配置——类库本身的配置不会生效,依赖宿主程序的配置。

方法2:检查并更新WCF服务引用生成的代码

添加WCF服务引用时,工具可能自动生成包含特定版本依赖的代码。打开服务引用的Reference.cs文件,搜索System.ServiceModel.Http相关引用,若发现硬编码了4.1.2.3版本的程序集引用,直接修改为当前安装的4.4.4版本即可。

方法3:清理项目并重新还原NuGet包

  • 删除项目目录下的bin和obj文件夹
  • 在Visual Studio中依次点击工具→NuGet包管理器→包管理器设置→清除所有NuGet缓存
  • 右键项目选择还原NuGet包
  • 重新生成整个解决方案

方法4:手动指定兼容的包版本

如果上述方法无效,可尝试卸载当前4.4.4版本,安装与4.1.2.3兼容的更高版本(如4.5.x系列,需确认支持netstandard2.0)。通过NuGet包管理器控制台执行:

Uninstall-Package System.ServiceModel.Http -ProjectName YourProjectName
Install-Package System.ServiceModel.Http -Version 4.5.3 -ProjectName YourProjectName

安装完成后仍需添加方法1中的程序集绑定重定向配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:02:17