c# - C# - RestSharp - 请求被中止:无法创建 SSL/TLS 安全通道
问题描述
我正在尝试使用 RestSharp 调用 REST Web 服务。
以下是我的代码:
ServicePointManager.Expect100Continue = true;
ServicePointManager.DefaultConnectionLimit = 9999;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
var client = new RestClient(url);
var certificate = new X509Certificate();
certificate.Import(Properties.Resources.cert, "password", X509KeyStorageFlags.PersistKeySet);
client.ClientCertificates = new X509CertificateCollection() { certificate };
var request = new RestRequest(Method.POST);
request.AddHeader("Connection", "keep-alive");
request.AddHeader("Content-Type", "text/plain");
request.AddParameter("undefined", $"param={param}", ParameterType.RequestBody);
IRestResponse response = await client.ExecutePostTaskAsync(request);
return response;
但是,我收到错误 - 请求被中止:无法创建 SSL/TLS 安全通道。
我也尝试搜索此错误,但在人们建议使用的所有帖子中 -SecurityProtocolType.Tls12
和ServicePointManager.Expect100Continue = true
.
我已经在我的代码中使用了这些,但我仍然看到错误。此外,如果我尝试使用 Postman 发出类似的请求,它也可以正常工作。
还有什么我想念的吗?
解决方案
找到了。C# 要求在用户存储中导入证书。我错过了这部分。将 pfx 导入用户存储后,对于第一个请求,我被提示允许操作系统请求,后续请求完美无缺。
推荐阅读
- reactjs - React 获取组件外元素的偏移量
- java - 用于拆分字符串并存储在 HashMap Java 8 中的模式
- vue.js - 来自一个组件的 Apollo 查询会更新 Vue 中的所有兄弟姐妹
- javascript - 角度7中的管道和地图之间的确切区别是什么?
- mysql - 如何获取 MySQL 数据库中特定表的大小?
- devexpress - 使用 DevExpress 编码的 UI
- html - Speechsynthesis API 是 HTML5 官方提供的吗?
- php - 如何在实时服务器上的 laravel 5.4 中发送电子邮件 Swift_TransportException 无法与主机 smtp.gmail.com 建立连接
- spring - Log4j2 未在 Linux 中使用 Spring Boot 创建日志文件
- .net - 如何在 csproj 文件中包装 MSBuild 错误任务的长文本