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

时间:2016-07-22 15:07:40

标签: c# ssl webclient

我已经阅读了与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网址,则每次都有效。但是,上面的代码每隔一个请求就会失败。为什么呢?

这是堆栈跟踪:

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

1 个答案:

答案 0 :(得分:0)

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