C# 提交網頁請求時出現如下錯誤: System.Net.WebException: 操作超時


原因一:

連接超時時間 Timeout 以及寫入Post數據超時時間 ReadWriteTimeout 設置得太短,一般要設置大於6000ms。

 

原因二:

Expect100Continue 屬性的值設置為了true,將 Expect100Continue 屬性的值設置為 false 即可解決問題。

 

補充

Expect 100 Continue其實是http協議1.1中的一個header屬性,就是說如果設置了Expect 100 Continue,那么就意味着客戶端在向服務器發送數據的時候,需要先向服務器發起一個請求,看服務器是否願意接受客戶端將要發送的數據(我們這里可以認為是http body,往往是較大的數據塊)。因為Expect 100 comtinue會導致客戶端在向服務器發送數據是進行兩次請求,這樣對通信的性能方面將會受到一定的影響,但這種情況在做驗證或者給予curl的服務器是很常見的,這也是該屬性的主要應用場合。介於以上原因,我們不能濫用該屬性,並且在不支持http 1.1的協議的服務器也會產生一定的問題。

 

對HTTP/1.1代理服務器的要求:

--- 若代理服務器接到一個請求,此請求包含值為"100-continue"的Expect請求頭域,並且代理服務器可能知道下一站點的服務器遵循HTTP/1.1或更高版協議,或者不知道下一站點服務器的HTTP版本,那么它必須包含此Expect頭域來轉發此請求。
--- 若代理服務器知道下一站點服務器版本是HTTP/1.0或更低,則它不能轉發此請求,並且它必須以417(期望失敗)狀態響應。
--- 代理服務器應當維護一個緩存,以記錄最近訪問下一站點服務器的HTTP版本號。
--- 若接收到的請求來自於版本是HTTP/1.0(或更低)的客戶端,並且此請求不含值為"100-continue"的Expect請求頭域,那么代理服務器不能轉發100(繼續)響應。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM