WCF服务+客户端(TLS1.2问题)

时间:2017-06-16 00:53:39

标签: c# web-services wcf wsdl tls1.2

我们的服务器已禁用SSLv3,TLS1.0和TLS1.1。因此,在尝试检索WSDL时尝试添加服务引用时Visual Studio失败。

  

“基础连接已关闭:发送时发生意外错误。   无法从传输连接读取数据:远程主机强制关闭现有连接。   远程主机强制关闭现有连接   元数据包含无法解析的引用:   向https://mywebsite.com/Service/Service.svc?wsdl发出HTTP请求时发生错误。这可能是由于在HTTPS情况下未使用HTTP.SYS正确配置服务器证书。这也可能是由客户端和服务器之间的安全绑定不匹配引起的。   底层连接已关闭:发送时发生意外错误。   身份验证失败,因为远程方已关闭传输流。   如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。“

可以在浏览器中访问WSDL。启用TLS 1.0 / 1.1和SSLv3时,WSDL下载正常。但是,由于PCI要求,我们必须禁用SSLV3,TLS1.0和TLS1.1。

我知道以下System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;,但我不太确定这是否会在连接控制台客户端或WCF服务(或两者)中进行。

任何建议都将不胜感激

1 个答案:

答案 0 :(得分:1)

下面的行需要在客户端中,因为这就是建立连接。

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

根据此博客TLS 1.2 and .NET Support: How to Avoid Connection Errors,以上内容适用于.Net 4.5

对于.Net 4.6及更高版本,它将默认为TLS 1.2,您无需指定TLS 1.2

对于.Net 4.0,您需要以下代码。

 System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

NET 3.5或更低版本,您需要为您的操作系统安装适当的Microsoft补丁(在博客中列出)。

相关问题