首页 > 解决方案 > 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.Tls12ServicePointManager.Expect100Continue = true.

我已经在我的代码中使用了这些,但我仍然看到错误。此外,如果我尝试使用 Postman 发出类似的请求,它也可以正常工作。

还有什么我想念的吗?

标签: c#restrestsharp

解决方案


找到了。C# 要求在用户存储中导入证书。我错过了这部分。将 pfx 导入用户存储后,对于第一个请求,我被提示允许操作系统请求,后续请求完美无缺。


推荐阅读