禁用TLS1.0/1.1仅启用TLS1.2后WCFTestClient调用WCF服务报错如何解决
WCFTestClient调用仅支持TLS1.2服务报错解决方案
问题根因
你遇到的客户端与服务端没有通用算法报错,是WCFTestClient默认未启用TLS1.2协议导致,你已经在服务端禁用了TLS1.0/1.1,客户端默认发起的低版本TLS握手会被服务端直接拒绝,和你查到的WCFTestClient本身限制的结论一致。
可行解决方案
方案1:修改操作系统级.NET TLS配置(全局生效)
- 按下Win+R输入
regedit打开注册表编辑器 - 定位到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 - 新建两个DWORD值:
SchUseStrongCrypto,数值设为1SystemDefaultTlsVersions,数值设为1
- 如果是64位系统,还要定位到
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319,重复新建上面两个DWORD值 - 重启计算机后再用WCFTestClient调用即可生效
方案2:单独修改WCFTestClient配置(不影响全局)
你之前修改AppContext开关没有生效,大概率是修改的是自己项目的配置,而非WCFTestClient本身的配置,按以下步骤操作即可:
- 找到WCFTestClient的安装路径,通常位于Visual Studio安装目录下的
Common7\IDE\WcfTestClient.exe - 在同目录下新建名为
WcfTestClient.exe.config的配置文件,写入以下内容:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false;Switch.System.Net.DontEnableSystemDefaultTlsVersions=false" /> </runtime> <system.net> <settings> <servicePointManager securityProtocol="Tls12" /> </settings> </system.net> </configuration>
- 保存后重启WCFTestClient即可生效
方案3:替换测试工具
如果以上方案都不生效,可直接用Postman、SoapUI等支持自定义TLS版本的工具调用WCF SOAP服务,手动构造请求报文即可完成测试。
验证方法
调用前可以先通过浏览器访问服务地址,如果能正常打开服务说明页,说明本地TLS1.2配置已经生效,再用WCFTestClient调用即可。
内容的提问来源于stack exchange,提问作者Sagar Jena
相关产品推荐
相关产品推荐

