使用wsdl命令行工具生成Proxy类失败,SSL/TLS安全通道报错求助
解决wsdl命令行工具生成Proxy类时的SSL/TLS安全通道错误
以下是几种可行的解决方法:
1. 强制wsdl.exe使用高版本TLS协议
wsdl.exe默认可能依赖旧版TLS协议(如TLS 1.0/1.1),而目标WSDL服务器仅支持TLS 1.2及以上版本,导致连接失败。可以通过配置文件或注册表调整:
- 配置文件方式(仅对wsdl.exe生效)
找到wsdl.exe的安装目录(通常在C:\Program Files (x86)\Microsoft SDKs\Windows\v[版本号]\bin\NETFX [版本号] Tools路径下),创建wsdl.exe.config文件,写入以下内容:
<configuration> <runtime> <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false"/> </runtime> <system.net> <settings> <servicePointManager securityProtocol="Tls12"/> </settings> </system.net> </configuration>
- 注册表方式(全局生效)
打开注册表编辑器,定位到以下路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
新建DWORD值SchUseStrongCrypto,设置数值为1。
若为64位系统,需同步在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319路径下添加相同配置。
2. 手动下载WSDL文件后本地生成
如果直接通过wsdl.exe访问远程WSDL地址失败,可先通过支持对应TLS版本的浏览器手动下载WSDL文件到本地,再用wsdl.exe处理本地文件:
wsdl.exe "C:\本地路径\your-service.wsdl"
注意:若WSDL中引用了外部XSD文件,需一并下载到本地,生成时将所有相关文件路径传入命令。
3. 解决证书信任问题
若目标服务器使用自签名证书或不受信任CA颁发的证书,wsdl.exe会拒绝建立SSL连接:
- 用浏览器打开WSDL地址,点击地址栏锁图标,查看证书详情并导出为
.cer格式文件; - 打开
mmc.exe,添加「证书」管理单元,选择「计算机账户」; - 展开「受信任的根证书颁发机构」,右键选择「所有任务」→「导入」,导入刚才导出的证书。
完成后重新运行wsdl.exe尝试生成Proxy类。
内容的提问来源于stack exchange,提问作者wiki
相关产品推荐
相关产品推荐

