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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM