C# 使用HttpClient(.NET)时出现SSL策略错误

C# 使用HttpClient(.NET)时出现SSL策略错误,c#,.net,ssl,C#,.net,Ssl,我正试图在本地web服务器上使用带有自签名证书的RESTAPI。在运行时,应用程序抛出错误 AuthenticationException:根据验证过程,远程证书无效 我已经尝试了这个答案中的修复方法:但是错误仍然存在。代码如下: static void Main(string[] args) { HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Clear

我正试图在本地web服务器上使用带有自签名证书的RESTAPI。在运行时,应用程序抛出错误

AuthenticationException:根据验证过程,远程证书无效

我已经尝试了这个答案中的修复方法:但是错误仍然存在。代码如下:

static void Main(string[] args)
    {
        HttpClient httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Clear();

        ServicePointManager.ServerCertificateValidationCallback = delegate (
            object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return true;
        };
        var loginPage = httpClient.GetAsync("https://<local IP address>/loginpage.html").GetAwaiter().GetResult();

        //do stuff with response...
    }
static void Main(字符串[]args)
{
HttpClient HttpClient=新HttpClient();
httpClient.DefaultRequestHeaders.Clear();
ServicePointManager.ServerCertificateValidationCallback=委托(
对象s、X509证书证书、X509链、SslPolicyErrors SslPolicyErrors)
{
返回true;
};
var loginPage=httpClient.GetAsync(“https:///loginpage.html).GetAwaiter().GetResult();
//做一些有反应的事情。。。
}

我能做些什么来有效地忽略SSL策略错误呢?

找到了答案。HttpClient类没有使用
ServicePointManager.ServerCertificateValidationCallback
方法。解决办法如下:

static void Main(string[] args)
    {
        HttpClientHandler httpClientHandler = new HttpClientHandler();
        httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; };

        HttpClient httpClient = new HttpClient(httpClientHandler);
        httpClient.DefaultRequestHeaders.Clear();

        var loginPage = httpClient.GetAsync("https://<local IP address>/loginpage.html").GetAwaiter().GetResult();
     }
static void Main(字符串[]args)
{
HttpClientHandler HttpClientHandler=新的HttpClientHandler();
httpClientHandler.ServerCertificateCustomValidationCallback=(消息、证书、链、错误)=>{return true;};
HttpClient HttpClient=新的HttpClient(httpClientHandler);
httpClient.DefaultRequestHeaders.Clear();
var loginPage=httpClient.GetAsync(“https:///loginpage.html).GetAwaiter().GetResult();
}