无法每隔其他请求创建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>
答
检查您的商店的根证书。朋友发现,如果超过一定数量(认为是300左右),并不是所有的证书都可以在applocations生命周期中使用。我们有一个案例,连接似乎随机失败。几天前,Microsoft将一些新证书推送到Windows Server上的根存储中。
有没有设置任何本地代理? –
这很棘手,特别是因为我无法复制它。该域映射到三个不同的IP。也许你的程序是循环解析到不同的服务器,并且其中一台服务器的配置方式可能会失败,但[SSLLabs](https://www.ssllabs.com/ssltest/analyze.html?d = secure.geonames.net)不报告(即使他们的TLS不安全,它应该工作)。 是否有内部异常?异常的“HResult”是什么? – vcsjones