Azure api 请求被中止:无法创建 SSL/TLS 安全通道。 http客户端在调用一些web api时
Posted
技术标签:
【中文标题】Azure api 请求被中止:无法创建 SSL/TLS 安全通道。 http客户端在调用一些web api时【英文标题】:Azure api The request was aborted: Could not create SSL/TLS secure channel. http client While calling some web api 【发布时间】:2016-05-19 13:30:17 【问题描述】:以下代码在 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);
上面的调用没有得到任何响应,只是得到错误
请求中止:无法创建 SSL/TLS 安全通道
【问题讨论】:
您找到解决方法了吗?遇到同样的问题。 不,我找不到解决办法。 您的 API 使用的是 Azure 应用服务还是 Azure 云服务? 【参考方案1】:我们最近遇到了一些与 API 类似的问题。
在我们的例子中,这些问题是通过将安全协议类型更改为 TLS 1.2 来解决的,如下所示:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
这似乎是 SSL 被弃用以及 PCI 建议在 2016 年中期采用 TLS 1.2 的结果。请参阅here 了解更多信息
编辑:
这对我有用:
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;
【讨论】:
我已经尝试了 SecurityProtocol 的所有选项,没有一个对我不起作用 -;) 对我来说,这在本地服务器和 Windows 服务器上也可以正常工作,但在 azure 上它不起作用 你并不孤单。有一个很长的线程social.msdn.microsoft.com/Forums/azure/en-US/…,但没有解决方案【参考方案2】:我们今天一直在解决同样的问题,你需要做的就是增加.NET的运行时版本
4.5.2 无法解决上述问题,而 4.6.1 还可以
<httpRuntime targetFramework="4.6.1"/>
如果需要保留.NET版本,则设置
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
【讨论】:
以上是关于Azure api 请求被中止:无法创建 SSL/TLS 安全通道。 http客户端在调用一些web api时的主要内容,如果未能解决你的问题,请参考以下文章
“请求被中止:无法创建 SSL/TLS 安全通道”第一次访问 API 时
Api 随机调用失败 - 请求被中止:无法创建 SSL/TLS 安全通道
RestRequest 在本地工作,但不是来自天蓝色“请求被中止:无法创建 SSL/TLS 安全通道。”
发出请求时出错:请求被中止:无法创建 SSL/TLS 安全通道