在.NET Framework 4.5中使用WebClient關閉SSL金鑰校驗的C#與VB.Net寫法

雖然 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# 來進行新的專案開發。

但這種狀況對我來説,是挺可惜的。