Dot-Net

Twitter API 以“遠端主機強制關閉現有連接”響應

  • November 26, 2019

我的公司有一些 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、流式傳輸和 webhook;標準、高級、企業以及廣告和媒體 API),以及更廣泛的 Twitter 平台。

看起來我們得到了 4 天的寬限期,因為我們的程式碼在 7 月 25 日到 28 日之間沒有問題。

我相信伺服器本身安裝了 TLS 1.2,所以問題可能是這個項目是用預設使用 TLS 1.1 的 dotNET 4.0 編譯的?

將我們的項目升級到 dotNET 4.5 會解決問題嗎,還是其他問題?

我來安裝 dotNET 4.5 並獲得修復/刪除選項,表明它已經安裝!這是出乎意料的。

所以我添加了這行程式碼:

System.Net.ServicePointManager.SecurityProtocol = 3072

並將 Web.config 更改為使用targetFramework="4.5"

現在一切都恢復正常了。謝謝。

從 7 月 29 日開始,我也遇到了同樣的問題。我的項目使用 .NET 4.5.2 編譯並使用 LinqToTwitter 庫。在撥打 Twitter 電話之前,我可以通過添加以下行來解決問題。

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

引用自:https://stackoverflow.com/questions/57271345