Http 请求 由于远程方已关闭传输流,身份验证失败。错误的解决办法
问题描述
最近用 HttpClient 模拟请求去读取一张图片,结果发现一直被拒绝错误信息如下图:
查找原因:
通过多方了解是 SSL 协议问题造成的,但是发现 .net framework 4.0 只有 Tls1.0 版本,试了
SslProtocols = System.Security.Authentication.SslProtocols.Tls
依然无法解决,因为对方服务器用的是 Tls1.2 协议,恰好 .net framework 4.0 中枚举类(SslProtocols)没有 Tls1.2协议,如下图:
解决方法:
方法一
修改项目为 .net framework 4.0 以上版本 或是 .net core 版本均提供了 Tls1.2 版本的枚举信息。
方法二
依然使用 .net framework 4.0 的情况下可以用如下代码方式即可解决;
SslProtocols = (System.Security.Authentication.SslProtocols)3072
方法二说明,因为在高版本中Tls1.2对应的值类型数值是 3072 所以利用类型转换的方式强制赋值一个版本代码即可使用Tls1.2版本的加密协议。
说明
官方枚举类对象说明地址 .net framework 4.0 版本,更高版本
版权声明:本文为qiaohuyue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。