DeepSkyFire Develop Note - VB.Net https://deepskyfire.com/tag/VB-Net 在.NET Framework 4.5中使用WebClient關閉SSL金鑰校驗的C#與VB.Net寫法 https://deepskyfire.com/sub/16.html 2019-11-16T00:00:00+08:00 雖然Microsoft沒有明説,但在17年之後Microsoft貌似就已經放棄了VB.Net與C#的同步更新功能的做法。導致在現在的VS2019中如果我們要使用.NET Framework 4.5來進行程式碼編寫,一些新機能與寫法已經出現了C#無法轉換為VB.Net的情況。這是我前些天碰到的一個專案中需要加入的機能,使用WebClient關閉SSL金鑰校驗。一般以前我都是直接在網路上搜尋C#的程式碼然後再次轉換爲VB.Net的程式碼進行使用。然而此功能的C#程式碼在轉換過程中卻被告知轉換失敗:public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; } ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications); //添加至你的WebClient構造Function中進行使用 這段C#的程式碼ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);無法轉換成為VB.Net的程式碼。那在VB.Net中要如何使用呢?我們需要使用以下寫法:Public Function AcceptAllCertifications(ByVal sender As Object, ByVal certification As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean Return True End Function ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications '添加至你的WebClient構造Function中進行使用 相比於C#,我本人是更喜歡VB.Net的語法。因爲VB.Net的語法我本人認爲更加優雅。但現實是,Microsoft已經放棄了對VB.Net的更新,以後類似的情況只會多不會少。如果可能的話,可以盡量選擇C#來進行新的專案開發。但這種狀況對我來説,是挺可惜的。