我们的服务器已禁用SSLv3,TLS1.0和TLS1.1。因此,Visual Studio 在尝试检索 WSDL 时尝试添加服务引用时失败。
"基础连接已关闭:发送时发生意外错误。 无法从传输连接读取数据:远程主机强行关闭了现有连接。 远程主机强行关闭了现有连接 元数据包含无法解析的引用: 向 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 服务(或两者)。
任何建议将不胜感激
行下面的行需要在客户端中,因为这是建立连接的原因。
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
根据此博客TLS 1.2和.NET支持:如何避免连接错误,上述内容将适用于.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 修补程序(在博客中列出)。