無法建立SSL/TLS的安全通道及.net framework設定

  • 3961
  • 0
  • C#
  • 2021-12-06

公司的排程無法成功更新DB

看了LOG中出現[無法建立SSL/TLS的安全通道]

以下為解決方法

 

using ( WebClient client = new WebClient() ) {
  //加入的程式碼===========
  System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
  ServicePointManager.SecurityProtocol =
  SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
  //======================
  client.Encoding = Encoding.UTF8;
  engResponse = client.DownloadString(mEngNewDataUrl);
}

其中SecurityProtocolType.Tls12須將.NET Framawork 升至4.6版本才可使用

 Ssl3, Tls則是已經不支援(就不打在上方程式中)

.NET Framawork 版本的設定方式:

在方案總管點右鍵==>屬性

選擇較高的版本,這邊直接選4.8,

如果要選4.8則是要去https://dotnet.microsoft.com/download/dotnet-framework/net48下載

因為是開發要用的,所以下載開發包並安裝,

安裝完後程式才能鍵出SecurityProtocolType.Tls12,

執行程式就不會再出現無法建立SSL/TLS的安全通道的訊息

將程式上到正式機運行,出現以下畫面

原因是正式機並沒有安裝4.8版本,這時回到上一步下載並安裝[運行包]即可

 

 

2021/12/6補充:

如果遇到主機無法對外連線的狀況,以上方式將無法使用,需另外下載離線版的安裝

https://support.microsoft.com/zh-tw/topic/%E7%94%A8%E6%96%BC-windows-%E7%9A%84-microsoft-net-framework-4-8-%E9%9B%A2%E7%B7%9A%E5%AE%89%E8%A3%9D%E7%A8%8B%E5%BC%8F-9d23f658-3b97-68ab-d013-aa3c3e7495e0