如何忽略 SSL 策略来执行 HTTPClient 请求?

How to ignore SSL policy to perform a HTTPClient request?

我试图忽略 ssl 策略以使用 HttpClient 发出请求,但从未调用 ServerCertificateValidationCallback。在 ASP.NET Core App 中调用 ServerCertificateValidationCallback 的正确位置是什么?我把它放在 HttpClient using 之前。

注意:这个 class 在 net462 Class 库中。

代码:

 System.Net.ServicePointManager.ServerCertificateValidationCallback += 
 delegate (object sender,      
 System.Security.Cryptography.X509Certificates.X509Certificate certificate,
 System.Security.Cryptography.X509Certificates.X509Chain chain,
 System.Net.Security.SslPolicyErrors sslPolicyErrors)
 {
     return true; 
 };

 using (var client = new HttpClient())
 {
    client.BaseAddress = new Uri("https://myapi");
    ...

    var result = client.PostAsync(method, httpContent).Result;
    ...
 }

尝试将回调初始化代码放在更早的位置 - 在显示 Web 控件或主函数之前。

归功于此答案:

考虑这样尝试

//Handle TLS protocols
System.Net.ServicePointManager.SecurityProtocol =
    System.Net.SecurityProtocolType.Tls
    | System.Net.SecurityProtocolType.Tls11
    | System.Net.SecurityProtocolType.Tls12;

var client = new HttpClient();
client.BaseAddress = new Uri("https://myapi");
//...

var result = await client.PostAsync(method, httpContent);