Azure api请求已中止:无法创建SSL/TLS安全通道.http客户端在调用一些web api时

jit*_*der 6 c# ssl azure dotnet-httpclient

下面的代码在localhost上工作正常,但在microsoft azure上部署我的api后得到上面的错误.

我的代码如下:

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);
}
Run Code Online (Sandbox Code Playgroud)

没有得到任何响应上面的电话只是得到错误

请求已中止:无法创建SSL/TLS安全通道

Mat*_*ans 2

我们最近在 API 方面遇到了许多类似的问题。

在我们的例子中,这些问题是通过将安全协议类型更改为 TLS 1.2 来解决的,如下所示:

  ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)

这似乎是由于 SSL 被弃用以及 PCI 自 2016 年中期建议采用 TLS 1.2 的结果。请参阅此处了解更多信息

编辑:

这对我有用:

 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)