C# webservice 基础连接已经关闭: 发送时发生错误,https请求使用TLS1.2

IE或c#写的客户端,调用WebService是,默认使用TLS 1.1协议。如果服务器关闭了TLS1.1,使用TLS1.2时,客户端必须增加1.2的语法,否则会出现错误:

System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接

System.Net.WebException: 基础连接已经关闭: 发送时发生错误。 

解决方法:

 

客户端语言
版本
类库
是否支持
兼容方案
Java 1.6.115之前   第三方支持包
1.6.115之后   启动jvm 添加参数-Dhttps.protocols=TLSv1.1,TLSv1.2 
1.7   启动jvm 添加参数-Dhttps.protocols=TLSv1.1,TLSv1.2 
1.8   默认支持
Nodejs 各个版本   默认支持
c#,asp.net 4.0-4.4  

在发送HTTP请求前加入下行代码

using System.Net;
*******************
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
4.5  

如果是4.5以上版本可以直接使用

using System.Net;
*******************
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
Python  2.7-3   默认支持
curl 7.19.7   默认支持
Golang  1.7.4 net/http 默认支持
Ruby        
php  php5.6 file_get_contents  
  http\client  
  curl  
php5.3.29 file_get_contents  
  http\client  
  curl  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
源自https://blog.csdn.net/yanghaitian/article/details/77498872

你可能感兴趣的:(C# webservice 基础连接已经关闭: 发送时发生错误,https请求使用TLS1.2)