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安全通道
我们最近在 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)
| 归档时间: |
|
| 查看次数: |
3042 次 |
| 最近记录: |