我公司有一些dotNET代码,在过去三个月中一直与Twitter的API进行了愉快的交流,从而发布了我们的新闻。
在7月29日,它停止工作,并因以下错误而发出POST请求:
An existing connection was forcibly closed by the remote host
System.Net.Sockets.SocketException
我认为这是因为我们的服务器仍在使用TLS 1.1,我只是从6月才发现此Twitter API公告,内容为:
自2014年删除SSL支持104以来,Twitter API对所有传入连接都要求至少TLS 1.0。TLS 1.0和1.1在2008年都被TLS 1.2取代。
从2019年7月25日开始,所有与Twitter API(以及所有其他Twitter域)的连接都将要求使用TLS 1.2。此更改将影响API的所有格式和层(REST,流和Webhooks;标准,高级,企业以及广告和媒体API),以及更广泛的Twitter平台。
似乎我们有4天的宽限期,因为我们的代码在7月25日至28日之间没有问题。
我相信服务器本身已经安装了TLS 1.2,所以问题可能出在这个项目是使用dotNET 4.0编译的,默认情况下使用TLS 1.1?
将我们的项目升级到dotNET 4.5是否可以解决问题,还是其他呢?
我在7月29日也遇到了同样的问题。我的项目使用.NET 4.5.2编译,并使用LinqToTwitter库。通过在发出Twitter呼叫之前添加以下行,我能够解决此问题。
System.Net.ServicePointManager.SecurityProtocol |= System.Net.SecurityProtocolType.Tls12;