C# - RestSharp - 请求被中止:无法创建 SSL/TLS 安全通道
C# - RestSharp - The request was aborted: Could not create SSL/TLS secure channel
我正在尝试使用 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 导入用户存储后,对于第一个请求,OS 提示我允许该请求,后续请求完美无缺。
我正在尝试使用 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 导入用户存储后,对于第一个请求,OS 提示我允许该请求,后续请求完美无缺。