C# 使用HttpClient(.NET)时出现SSL策略错误
我正试图在本地web服务器上使用带有自签名证书的RESTAPI。在运行时,应用程序抛出错误 AuthenticationException:根据验证过程,远程证书无效 我已经尝试了这个答案中的修复方法:但是错误仍然存在。代码如下: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
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();
}