c# – 因為算法不同,客戶端和服務器無法通信


  今天使用測試APP和服務器端進行數據交互時,死活過不去,查看異常信息提示:“因為算法不同,客戶端和服務器無法通信”。   最后通過道友的一篇文章找到了解決方案,在此記錄一下。

原因可能是Http請求的安全協議不同導致的,服務器的系統是windows Server 2016 Datacenter. 配置了https協議證書,支持TLZ1.2,TLZ1.1等安全傳輸。  而app的接口代碼是.net framework 4.5且再發送http請求時未指定協議版本,默認發送的協議頭應該是沒有啟用安全協議(.net4.5所支持的最低tlz安全版本,最高為TLZ1.2)。   那么如果服務器端設置了安全標准,要求TLZ1.2,那么想讓程序按照最高安全協議TLZ1.2傳輸數據的話,是需要手動指定的。

 

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

// 或者

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

 

參考文章:  

c# – 客戶端和服務器無法通信,因為它們在Windows Server 2008 Web上沒有通用算法

關於安全性:.NET 4.5中的默認安全協議

 


免責聲明!

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



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