首页 > 解决方案 > 执行证书 http 客户端调用时出现问题:“请求已取消:无法创建安全的 TLS/SSL 通信”

问题描述

我将情况解释得更清楚:我有一个 wcf 服务,其中包含一个内部管理器,该管理器对另一个服务进行休息调用。要进行这些调用,外部服务需要一个证书(考虑使用的证书是有效的)。问题是,当我尝试调用此服务的 http 客户端调用时,会引发异常:“请求已取消:无法创建安全的 TLS / SSL 通信”。我尝试了不同的解决方案,但我无法解决问题,我希望有人能帮助我。下面是进行调用的内部管理器的代码。

try
        {
            WebRequestHandler handler = new WebRequestHandler();

            handler.ClientCertificates.Add(getCertificate());

            HttpClient client = new HttpClient(handler);

            ServicePointManager.Expect100Continue = true;

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            ServicePointManager.ServerCertificateValidationCallback +=

                (sender, cert, chain, sslPolicyErrors) => { return true; };

            client.DefaultRequestHeaders.Accept.Clear();

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var input = new 
            {
                id = 90,

                version = Convert.ToInt32(Version),

                network = Convert.ToInt32(Id),

                list = List
            };

            var response = await client.PostAsJsonAsync(_endpoint, input);

            if (response.StatusCode != HttpStatusCode.OK)
            {

                throw new Exception($"Error code: {response.StatusCode}");

            }

            var returnedData = await response.Content.ReadAsStringAsync();
        }
        catch (Exception ex)
        {
            throw new Exception($"{ex.Message}\n{ex.StackTrace}");
        }

注意:考虑“getCertificate”方法返回正确的证书

标签: c#restsslx509certificatedotnet-httpclient

解决方案


推荐阅读