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

Visual Studio 2012禁用TLS 1.0后添加服务引用报错问题

解决VS2012添加服务引用时的TLS 1.0禁用问题

我碰到过好几个类似的场景,你这个问题的核心在于:VS2012自带的服务引用工具(底层依赖SvcUtil.exe)默认并没有启用TLS 1.1/1.2,哪怕你的项目已经切换到了.NET Framework 4.5。虽然项目本身运行时能正常用TLS 1.1/1.2连接数据库,但VS的工具链还是在用老的TLS 1.0去请求服务元数据,这就导致了和之前SQL连接一样的报错。

给你几个可行的解决方案:

方案一:修改VS2012的配置文件,强制启用TLS 1.1/1.2

  1. 找到VS2012的配置文件路径:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe.config
  2. 用文本编辑器(以管理员权限打开)编辑这个文件
  3. 在<configuration>节点内添加对应配置:
    • 如果文件里已有<runtime>节点,就把下面的配置插入其中;没有的话就新建<runtime>节点:
      <runtime>
        <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
      </runtime>
      
    • 同时也可以在<system.net>节点下补充配置(没有<system.net>就新建):
      <system.net>
        <settings>
          <servicePointManager securityProtocol="Tls11,Tls12" />
        </settings>
      </system.net>
      
  4. 保存文件后重启VS2012,再尝试添加服务引用

方案二:手动用SvcUtil.exe生成服务代理

如果修改VS配置不方便,也可以绕过可视化工具,直接用命令行生成代理类:

  1. 打开VS2012的开发者命令提示符(以管理员身份运行)
  2. 先设置环境变量强制启用强加密:
    set SCHANNEL_SUSE_STRONG_CRYPTO=1
    
  3. 运行SvcUtil命令拉取服务元数据并生成代理:
    svcutil.exe http://你的服务URL?wsdl
    
  4. 命令执行完成后,会生成一个.cs代理文件和一个output.config配置文件,把这两个文件添加到你的网站项目里,手动配置服务引用即可

额外注意事项

  • 确保你的Windows系统已经安装了支持TLS 1.1/1.2的补丁(Win7及以上需要安装KB3140245这类补丁,Win8及以上一般自带)
  • 如果服务端只支持TLS 1.2,要确保配置里只指定Tls12而不是包含TLS1.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:00:45