2016-05-19 8 views
6

Unten Code funktioniert gut auf localhost aber Getting den obigen Fehler nach der Bereitstellung meiner API auf Microsoft Azure.Azure API Die Anfrage wurde abgebrochen: Sicherer SSL/TLS-Kanal konnte nicht erstellt werden. HTTP-Client Während des Aufrufs einige Web-API

Mein Code ist wie folgt:

public class UsersController : Controller 
{ 
    private readonly HttpClient _client; 

    public UsersController() 
    { 
     ServicePointManager.Expect100Continue = true; 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; 
     _client = new HttpClient { BaseAddress = new Uri("https://pincode.saratchandra.in/api") }; 
     _client.DefaultRequestHeaders.Accept.Clear(); 
     _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    } 

public JsonResult GetAddress(int pincode) 
{ 
    var response  =_client.GetAsync("/pincode/125112").Result; 

    //Here it throws an exception: got no response 
    if (response.IsSuccessStatusCode) 
    { 
    } 

    return Json(ApiResult.Success(), JsonRequestBehavior.AllowGet); 
} 

keine Antwort für oben Anruf erhalten Bekamen nur den Fehler

Die Anforderung wurde abgebrochen: Es konnte keine sichere SSL/TLS-Kanal

erstellen
+0

Sie ein Update für diese gefunden? Das gleiche Problem erleben. –

+0

Nein, ich konnte keine Lösung finden. – jitender

+0

Verwenden Sie Azure App Services oder Azure Cloud Services für Ihre API? – TwistedStem

Antwort

0

Wir hatten vor kurzem eine Reihe ähnlicher Probleme mit APIs.

In unserem Fall wurden diese durch eine Änderung des Sicherheitsprotokolltypen auf TLS 1.2, aufgelöst in etwa so:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

Dies scheint ein Ergebnis der Abwertung von SSL zu sein, und die Empfehlung der Annahme von TLS 1.2 durch den PCI ab Mitte 2016. Siehe here für mehr

EDIT:

Dies funktioniert für mich:

class Program 
    { 
     private static HttpClient _client; 
     static void Main(string[] args) 
     { 
      ServicePointManager.Expect100Continue = true; 
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; 
      _client = new HttpClient(); 
      _client.DefaultRequestHeaders.Accept.Clear(); 
      _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

      var response = _client.GetAsync("https://pincode.saratchandra.in/api/pincode/125112").Result; 
     } 
    } 
+0

Ich habe schon alle Optionen für SecurityProtocol ausprobiert, keiner von ihnen funktioniert nicht für mich -;) – jitender

+0

siehe mein EDIT, mit einer funktionierenden Lösung –

+0

Auch für mich funktioniert das gut auf dem lokalen Server und Windows Server aber auf azurblau funktioniert es nicht – jitender

0

Wir haben das gleiche Problem nur heute zu lösen haben, und alles, was Sie tun müssen, ist die Laufzeitversion von .NET

4.5.2 erhöht nicht mit dem obigen Problem für uns nicht funktionierte, während 4.6.1 war OK

<httpRuntime targetFramework="4.6.1"/> 

Wenn Sie die .NET-Version halten müssen, setzen Sie dann

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
Verwandte Themen