无法每隔其他请求创建SSL/TLS安全通道

问题描述:

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

下面是代码:

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网址,则每次都可以运行。但是,上面的代码每秒都会失败。为什么?

这里是堆栈跟踪:

<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> 
+0

有没有设置任何本地代理? –

+0

这很棘手,特别是因为我无法复制它。该域映射到三个不同的IP。也许你的程序是循环解析到不同的服务器,并且其中一台服务器的配置方式可能会失败,但[SSLLabs](https://www.ssllabs.com/ssltest/analyze.html?d = secure.geonames.net)不报告(即使他们的TLS不安全,它应该工作)。 是否有内部异常?异常的“HResult”是什么? – vcsjones

检查您的商店的根证书。朋友发现,如果超过一定数量(认为是300左右),并不是所有的证书都可以在applocations生命周期中使用。我们有一个案例,连接似乎随机失败。几天前,Microsoft将一些新证书推送到Windows Server上的根存储中。