2016-05-19 17 views
6

Dưới đây mã hoạt động tốt trên localhost nhưng Bắt lỗi ở trên sau khi triển khai api của tôi trên Azure.Azure api Yêu cầu bị hủy: Không thể tạo kênh bảo mật SSL/TLS. http khách hàng Trong khi gọi một số trang web api

Mã của tôi là như sau:

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); 
} 

đã không nhận được bất kỳ phản ứng đối với cuộc gọi trên chỉ nhận được lỗi

Yêu cầu đã bị hủy bỏ: Không thể tạo SSL/TLS secure channel

+0

bạn đã tìm thấy một sửa chữa cho điều này? Trải nghiệm cùng một vấn đề. –

+0

Không, tôi không thể tìm được bản sửa lỗi cho nó. – jitender

+0

Bạn có đang sử dụng Dịch vụ ứng dụng Azure hoặc Dịch vụ đám mây Azure cho API của mình không? – TwistedStem

Trả lời

0

Gần đây, chúng tôi đã gặp một số vấn đề tương tự với API.

Trong trường hợp của chúng tôi những đã được giải quyết bằng cách thay đổi Type Protocol Security để TLS 1.2, như vậy:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

này dường như là một kết quả của việc không dùng SSL, và sự giới thiệu của việc thông qua TLS 1.2 bởi PCI tính đến giữa năm 2016. Xem here để biết thêm

EDIT:

này làm việc cho tôi:

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

tôi đã thử tất cả các tùy chọn cho SecurityProtocol không ai trong số họ không làm việc cho tôi -;) – jitender

+0

xem EDIT của tôi, với một giải pháp làm việc –

+0

Đối với tôi quá thats hoạt động tốt trên máy chủ địa phương và máy chủ cửa sổ nhưng trên Azure nó không hoạt động – jitender

0

Chúng tôi đã được giải quyết cùng một vấn đề chỉ là ngày hôm nay, và tất cả những gì bạn cần làm là tăng cường phiên bản thời gian chạy của .NET

4.5.2 đã không làm việc cho chúng tôi với vấn đề trên, trong khi 4.6.1 là OK

<httpRuntime targetFramework="4.6.1"/> 

Nếu bạn cần phải giữ cho phiên bản .NET, sau đó thiết lập

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
Các vấn đề liên quan