深入学习ing

c# – 因为算法不同,客户端和服务器无法通信

  今天使用测试APP和服务器端进行数据交互时,死活过不去,查看异常信息提示:“因为算法不同,客户端和服务器无法通信”。   最后通过道友的一篇文章找到了解决方案,在此记录一下。

原因可能是Http请求的安全协议不同导致的,服务器的系统是windows Server 2016 Datacenter. 配置了https协议证书,支持TLZ1.2,TLZ1.1等安全传输。  而app的接口代码是.net framework 4.5且再发送http请求时未指定协议版本,默认发送的协议头应该是没有启用安全协议(.net4.5所支持的最低tlz安全版本,最高为TLZ1.2)。   那么如果服务器端设置了安全标准,要求TLZ1.2,那么想让程序按照最高安全协议TLZ1.2传输数据的话,是需要手动指定的。

 

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

// 或者

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

 

参考文章:  

c# – 客户端和服务器无法通信,因为它们在Windows Server 2008 Web上没有通用算法

关于安全性:.NET 4.5中的默认安全协议

 

posted on 2020-10-14 22:52  深入学习ing  阅读(6792)  评论(0编辑  收藏  举报

导航