
开发者文档页面头部提示: “Starting 10 October 2017 developers must use TLS 1.1 or 1.2 when calling LinkedIn APIs. LinkedIn no longer supports TLS 1.0 for security reasons.” 中文翻译即是:“从2017年10月10日起,开发者必须使用 TLS1.1 或者 TLS1.2 请求 Linkedin API,因为安全的原因,LinkedIn 不再支持 TLS1.0”。
.Net Framework 4.5 中对 TLS(Transport Layer Security) 协议的枚举定义
1  | namespace System.Net  | 
如果项目是.Net Framework 4.5 版本可以在项目直接这样设置:
1  | ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;  | 
.Net Framework4.5版本支持但默认并不是设置的这个协议,4.6版本以上默认协议是TLS 1.2,无需设置。
当前项目框架版本是 .Net Framework 4.0,但是这个框架版本不支持 TLS1.2,SecurityProtocolType 是无法枚举 Tls12 这一项的,同时项目也并不准备升级到 4.5版本,还有解决办法吗?当然,我们依然可以枚举值来实现:
ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072;
这样产生的效果是一样的,在发送 POST 请求之前添加这一行就不会提示服务器请求异常了。
1  | var httpClient = new HttpClient();  | 
参考
TLS 1.2 and .NET Support: How to Avoid Connection Errors
Support for TLS System Default Versions included in the .NET Framework 3.5 on Windows Server 2012



