无法为每个OTHER请求创建SSL/TLS安全通道

本文关键字:SSL TLS 安全 通道 创建 请求 OTHER | 更新日期: 2023-09-27 17:58:11

我已经阅读了与SSL/TLS错误相关的大多数其他问题。PayPal没有这个问题(其他很多问题都是这样),我已经尝试设置SecurityProtocol,并使用始终返回true的ServerCertificateValidationCallback。这些都没有改变行为,即请求第一次成功完成,然后失败,然后成功,然后失败。我可以在每次重新启动应用程序时重复此行为。

这是代码:

HttpClient client = new HttpClient();
string url = "https://secure.geonames.net/countryInfoJSON?lang=" +
             HttpUtility.UrlEncode(lang) + "&username=username";
var countryResponse = await client.GetAsync(url);

如果我使用http而不是https向服务发出请求,它每次都能正常工作。如果我从Chrome点击https URL,它每次都能工作。然而,上面的代码每秒都会失败。为什么?

这是堆栈跟踪:

<Message>An error has occurred.</Message>
<ExceptionMessage>
The request was aborted: Could not create SSL/TLS secure channel.
</ExceptionMessage>
<ExceptionType>System.Net.WebException</ExceptionType>
<StackTrace>
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
</StackTrace>

无法为每个OTHER请求创建SSL/TLS安全通道

检查存储中的根证书。一位朋友发现,如果超过一定数量(假设是300左右),并不是所有证书都能在申请期内获得。我们有一个案例,连接似乎随机失败。几天前,Microsoft将一些新证书推送到Windows Server上的根存储中。