c# - .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 应用程序中工作?
解决方案
我正在尝试通过以下代码接受所有服务器证书为有效。但是,您可以实时添加逻辑来验证服务器证书。
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
....
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
...
// your https call goes here
....
推荐阅读
- opengl - 关于使用 glVertexAttribPointer 绑定不存在属性的索引的困惑
- c - 如何修改我用 C 编写的树遍历程序,使其不依赖递归?
- javascript - 承诺中来自 Console.log() 的奇怪行为
- flask - 如何使用 Flask SocketIO 进行多个事件?
- swift - 如何返回一个数组?
- android - Handler 何时与 Looper 关联?
- python - 如何在 python-bash 环境中管理进程?
- sql - 从 SQL 中的列中删除重复值
- javascript - 如何使用 javascript 将 css-grid 元素放入网格容器中
- c# - 如何转换跨度
到 ASCII 字符串?