我必须从VS2012(或VS2017,同样的问题)连接到基于Java的Web服务,该服务仅启用具有相互证书身份验证的TLS 1.2。 WSDL URL例如是https://example.com:8443/foo/bar?wsdl。我已经将根证书添加到了我信任的根存储中,并将带有私钥的客户端证书添加到了我的个人存储中,并且可以使用Chrome下载WSDL文件(在浏览器要求我提供证书以连接到该服务之后)。
问题是,我无法在Visual Studio中添加服务引用。我收到的文本是“尝试在'https://example.com:8443/foo/bar?wsdl处查找服务时发生错误(详细信息)”。单击“详细信息”将显示以下文本:
下载时出错 'https://example.com:8443/foo/bar?wsdl/_vti_bin/ListData.svc/ $ metadata'。 该请求已中止:无法创建SSL / TLS安全通道。 元数据包含无法解析的引用: 'https://example.com:8443/foo/bar?wsdl'。可以 没有使用权限建立SSL / TLS的安全通道 'example.com:8443'。该请求已中止:无法 创建SSL / TLS安全通道。如果服务在 当前的解决方案,请尝试构建解决方案并添加服务 再次引用。
看起来Visual Studio拥有WSDL的主要部分,但随后要求此... / $ metadata格言,该格言并不存在,WSDL中也未提及。如何配置Visual Studio以按原样使用服务?
请注意,我可以下载WSDL文件并从文件中添加服务引用,但是我希望依靠Visual Studio为我自动执行此操作,因此从现在开始的下一个开发人员不必花一天的时间弄清楚如何更新参考。另外,WSDL文件的绝对路径保存在Reference.svcmap文件中,当通过源代码控制共享项目时,这是不理想的。