首页 > 解决方案 > .NET Core 改装 HTTPS 错误

问题描述

我有以下代码,它使用 Refit 进行 HTTPS 调用。它适用于针对 .NET 框架 4.6.1 的控制台应用程序。

当我从针对 .NET Core 2.1 的控制台应用程序运行完全相同的代码时,我收到一个错误:

无法建立 SSL 连接...处理证书时发生未知错误

我正在使用改装版本 4.5.6

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();

事实上,当面向 .NET Core 2.1 时,我的所有 HTTPS 调用都失败了,但我的 HTTP 调用工作正常。

是否有一些配置或某些东西可以让 HTTPS 调用在使用 Refit 的 .NET Core 2.1 应用程序中工作?

标签: c#.net-corerefit

解决方案


我正在尝试通过以下代码接受所有服务器证书为有效。但是,您可以实时添加逻辑来验证服务器证书。

System.Net.ServicePointManager.SecurityProtocol =
            SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

....
 ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; 
...
// your https call goes here
....

推荐阅读