今天使用測驗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中的默認安全協議
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/175380.html
標籤:.NET技术
