C# .NET核心重新安装HTTPS错误
我有下面的代码,它使用Refit进行HTTPS调用。它可以从一个以.NET framework 4.6.1为目标的控制台应用程序中工作 当我从针对.NET Core 2.1的控制台应用程序运行完全相同的代码时,我得到一个错误: 无法建立SSL连接。。。处理证书时发生未知错误 我正在使用重新安装版本4.5.6C# .NET核心重新安装HTTPS错误,c#,.net-core,refit,C#,.net Core,Refit,我有下面的代码,它使用Refit进行HTTPS调用。它可以从一个以.NET framework 4.6.1为目标的控制台应用程序中工作 当我从针对.NET Core 2.1的控制台应用程序运行完全相同的代码时,我得到一个错误: 无法建立SSL连接。。。处理证书时发生未知错误 我正在使用重新安装版本4.5.6 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtoc
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
var baseAddress = new Uri(BaseHttpsAddress);
var httpClientHandler = new HttpClientHandler
{
ClientCertificateOptions = ClientCertificateOption.Automatic
};
var httpClient = new HttpClient(httpClientHandler) { BaseAddress = baseAddress, Timeout = _requestTimeout };
var service = RestService.For<IMyService>(httpClient);
var result = await service.GetUsers();
System.Net.ServicePointManager.SecurityProtocol=
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
var baseAddress=新Uri(BaseHttpsAddress);
var httpClientHandler=新的httpClientHandler
{
ClientCertificateOptions=ClientCertificateOptions.Automatic
};
var httpClient=newhttpclient(httpClientHandler){BaseAddress=BaseAddress,Timeout=\u requestTimeout};
var service=RestService.For(httpClient);
var result=await service.GetUsers();
事实上,当以.NETCore2.1为目标时,我所有的HTTPS调用都失败了,但我的HTTP调用工作正常
在.NET Core 2.1应用程序中使用Refit是否有一些配置或其他方法可以让HTTPS调用正常工作?您需要告诉ServicePointManager使用TLS(适当版本)协议接受连接。尝试这是针对.NET4.5的。但是,这同样适用于.NET Core。常规.NET会自动检查安装的Windows证书,而.NET Core不会
因此,对于.NET Core,我需要手动添加证书,并且它起到了作用。我试图通过下面的代码接受所有服务器证书为有效。。但是,在实时中,您可以添加逻辑来验证服务器证书
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
....
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
...
// your https call goes here
....
不幸的是,添加SecurityProtocol=SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;后,它仍然无法工作。。。我更新了问题中的代码,当时我尝试说SSL3已经过时,不再受支持