2017-10-30 4 views
0

Ich habe eine WPF-Anwendung und das Aufrufen von 4 Web-Service (Written Java) auf der gleichen Basis-URL und es funktionierte perfekt, bis ich Google Chrome installieren.Ich installiert Chrom und ich habe diesen Fehler habe:Konnte keinen sicheren Kanal für SSL/TLS C# Web-Service-Client

nicht sicheren Kanal für SSL/TLS C# Web Service etablieren konnte

ich nicht eine andere code.That für gerade passiert schreiben habe ich installiert Chrom dann entferne ich Chrom aber hat nicht funktioniert, und ich habe versucht, Systemwiederherstellung, ESET Smart Security zu deinstallieren und ich alle Windows (8.1 Single Language) -Zertifikat gereinigt.So wie kann Ich finde es heraus. Hier ist mein Web-Service Anrufer

public string call(string url, string json) 
{ 
    try 
    { 
     var webrequest = (HttpWebRequest)WebRequest.Create(url); 
     var key = JsonConvert.SerializeObject(LoginService.SessionData.SessionKey); 
     UTF8Encoding uTF8Encoding = new UTF8Encoding(); 
     byte[] requestBytes = uTF8Encoding.GetBytes(json); 
     WebClient client = new WebClient(); 

     webrequest.Method = "POST"; 
     webrequest.Headers.Add("SESSION_KEY", LoginService.SessionData.SessionKey); 
     webrequest.ContentType = "application/json"; 
     webrequest.ContentLength = requestBytes.LongLength; 
     Stream requestStream = webrequest.GetRequestStream();//here the exception 
     requestStream.Write(requestBytes, 0, requestBytes.Length); 

     using (var response = webrequest.GetResponse()) 
     using (var reader = new StreamReader(response.GetResponseStream())) 
     { 
      var responseBuf = reader.ReadToEnd(); 
      String responseJson = Convert.ToString(responseBuf); 
      return responseJson; 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    return null; 
} 
+0

Ich denke, es ist nur ein Zufall, dass es nach der Installation von Chrome brach. Wahrscheinlich hat der Dienst SSL zugunsten von TLS deaktiviert. Versuchen Sie es an einer beliebigen Stelle, bevor Sie den Anruf tätigen: 'ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12' – Crowcoder

+0

Es hat funktioniert, danke. Können Sie als Antwort auf Ihren Beitrag schreiben? aber ich habe etwas nicht verstanden, ich stelle das System wieder her und säubere alle Zertifikate, warum sie nicht funktionierten – tpbafk

+0

Benutzt du Cloudflare? sie haben letzte Nacht die Unterstützung von TLS 1.0/1.1 fallen lassen –

Antwort

0

Mit meiner Beobachtung gibt es eine große Anzahl von Dienstleistungen in den letzten Monaten, die SSL ausschalten und/oder älteren Versionen TLS Sicherheits inhärente Probleme, ihnen zu mildern.

Überall in der AppDomain kann Sie zwingen, nur die Verbindung die Verwendung von TLS 1.2 wie folgt aus:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

Sie können auch OR zusammen mehrere Versionen, wenn Sie ältere unterstützen müssen auch:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12

+0

Ich habe eine Methode, die Zahlung für jede Sekunde stimmt oder falsch ist, aber ich kann keine Antwort auf Fiddler sehen, nachdem Sie meinen Code zu meinem Projekt hinzufügen, was jetzt passiert, warum ich keine Antwort/Anfrage sehen kann? oder wie kann ich sie sehen? – tpbafk

+0

Es tut mir leid, ich weiß es nicht. Wahrscheinlich musst du Fiddler irgendwie konfigurieren, aber ich würde nicht wissen, wie. – Crowcoder

Verwandte Themen