在.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# 來進行新的專案開發。
但這種狀況對我來説,是挺可惜的。