我使用.net HttpClient,但這可能是一個更一般的HTTP問題: 我想允許用戶上傳大型文件,從有時緩慢和不可靠的移動連接。 如果上傳沒有在20秒內開始,那麼可能存在連接問題,因此應用程序應該採取適當的措施(例如,現在放棄並稍後再試。) 但是,如果上傳開始,則可能需要幾分鐘才能完成。在這種情況下,我不希望超時中斷它。然後我只想放棄並拋出一個錯誤,如果上傳進度速度減慢到爬行。HttpClient - 兩個超大上傳超時
所以看起來我想要兩個超時條件 - 初始連接超時20秒,上傳完成超時10分鐘(或最好動態計算)。
有沒有辦法做到這一點? HttpClient.Timeout似乎設置了整個上傳的限制,而不僅僅是初始連接。
我使用HttpClient.PutAsync(),並通過重寫HttpContent.SerializeToStreamAsync()來監視進度。如有必要,我可以在此功能中加入一個最小速度檢查,以便在進度太慢時終止。
乾杯。
但是,由於一些未知的原因,PutAsync重載沒有采取HttpCompletionOption。這是否意味着我需要使用SendAsync?我會怎麼做?我找不到使用HttpClient方法的示例。 – thund
因此,在上面的代碼中,我該如何使用響應變量來執行實際上傳? (帶進度報告)。我在WebRequest或HttpClient.PutAsync中使用的方法在這種情況下似乎不適用。 – thund
@thund我添加了一個更新,希望這是足夠的細節讓你去。 –