我已经阅读了大多数与 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>
最佳答案
检查您的商店中的根证书。 friend 发现,如果超过一定数量(认为是 300 左右),则在应用程序生命周期内并非所有证书都可用。我们有一个案例,连接似乎随机失败。几天前,Microsoft 将一些新证书推送到 Windows Server 上的根存储。
关于c# - 无法在每个其他请求中创建 SSL/TLS 安全通道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38529809/