c# – 因為演算法不同,客戶端和伺服器無法通訊
阿新 • • 發佈:2020-10-14
今天使用測試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上沒有通用演算法