2016-07-22 4 views
2

Ich habe die meisten anderen Fragen zu SSL/TLS-Fehlern gelesen. Dieses Problem tritt nicht bei PayPal auf (wie viele der anderen Fragen), und ich habe versucht, das SecurityProtocol zu setzen und ServerCertificateValidationCallback zu verwenden, das immer true zurückgibt. Keine davon hat das Verhalten geändert, dh die Anforderung wird beim ersten Mal erfolgreich ausgeführt, schlägt fehl, ist erfolgreich und schlägt fehl. Ich kann dieses Verhalten bei jedem Neustart der Anwendung wiederholen. HierKonnte keinen sicheren SSL/TLS-Kanal bei jeder anderen Anfrage erstellen

ist der Code:

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

Wenn ich die Anforderung an den Service mit http machen, statt https, es funktioniert jedes Mal gut. Wenn ich die https-URL von Chrome aus ankreuze, funktioniert es jedes Mal. Der obige Code schlägt jedoch jede zweite Anforderung fehl. Warum? Hier

ist der Stack-Trace:

<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

Gibt es einen lokalen Proxy, der festgelegt ist? –

+0

Das ist schwierig, zumal ich es nicht reproduzieren kann. Diese Domäne wird drei verschiedenen IPs zugeordnet. Vielleicht ist Ihr Programm Round-Robin-Auflösung auf einen anderen Server und einer der Server ist so konfiguriert, dass es dort versagt, obwohl [SSLLabs] (https://www.ssllabs.com/ssltest/analyze.html?d = secure.geonames.net) meldet dies nicht (obwohl ihr TLS unsicher ist, sollte es funktionieren). Gibt es eine innere Ausnahme? Was ist das 'HResult' der Ausnahme? – vcsjones

Antwort

0

überprüfen Sie Ihren Speicher für Stammzertifikate. Und Freund fand heraus, dass wenn es einen bestimmten Betrag überschreitet (denke, es war 300 oder so) nicht alle Zertifikate während der Laufzeit der Anwendungen verfügbar sind. Wir hatten einen Fall, bei dem die Verbindung zufällig fehlzuschlagen schien. Vor einigen Tagen hat Microsoft einige neue Zertifikate in den Stammspeicher auf Windows Server verschoben.

Verwandte Themen