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 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>