最近做一個資料采集的活,突然發現httpwebrequest訪問某些https的站點一直超時,主要是使用tls1.2 和tls1.3 的部分站點,有的可以訪問,有的就一直超時,網上找了很多解決方案,嘗試都無果,.net也升級到4.8了,這個版本支持tls1.3,非常不解,有什么好的解決方案嗎?重謝
uj5u.com熱心網友回復:
1、先試試不同的作業系統,或試試作業系統更新。在Windows下,http/https是由作業系統的http.sys來負責的。
DotNet對TLS的版本支持,是對傳遞引數等等的支持,具體tls還是由系統的http.sys來做。
不同的作業系統/補丁更新,會導致TLS上的行為出現不一樣。
比如取消不安全的安全套件,提出更高的安全要求,等等等等。
一個例子為了抵御 CVE-2019-1318,系統可能強制要求EMS,導致連接某些服務器時,出現失敗或超時的現象。
2、試試在linux下用curl等連接問題網站,用來幫助確認是否網站本身的問題。
3、重新用netcore編譯你的程式,試試在linux下用netcore程式連接問題網站。這個可以用來界定是否問題出在http.sys的兼容要求上,因為netcore程式運行在linux下并不使用http.sys。
uj5u.com熱心網友回復:
能夠確認的是,不管在開發機還是服務器上面用瀏覽器都是可以正常鏈接網站的,開發機是win10,服務器win server 2012,程式是一直報超時uj5u.com熱心網友回復:
使用 http 通訊除錯工具攔截收發訊息內容,如果時通時不通,連握手都不穩定,那跟你的客戶端程式沒關系。很可能是服務器程式過爛,并發處理能力超過了程式員的經驗和測驗極限。uj5u.com熱心網友回復:
如果服務端是自己公司的服務系統,建議先用 http 來提供測驗。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/31287.html
標籤:C#
上一篇:使用AssemblyInstaller 卸載服務時 發生例外
下一篇:安裝不了pygame
