c# - 执行证书 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”方法返回正确的证书
解决方案
推荐阅读
- flutter - 在颤动中对齐行内的项目
- javascript - 蒙版更改后光标在错误的位置
- python - 更改while循环(缩短)并检查我的字典的方法
- python - 考虑到它是类类型,如何在字节数组中发送使用椭圆曲线加密生成的公钥?
- jquery - Jquery Tooltipster - ajax 后访问 DOM
- oracle - 通过 azure databricks 运行 oracle 查询
- woocommerce - Woocommerce - 在管理面板中显示订单总量
- android - 为什么 dlopen() 会在两个不同的调用中为同一个共享库返回两个不同的句柄?
- python - 将创建日期戳添加到 seaborn 可视化
- java - 瞬态变量的约束验证异常