2016-02-11 249 views
0

這是有效的行爲,HTTP(tcp)請求可能會丟失,而不通知偵聽器。在這裏看到的是,討論: C# httpClient (block for async call) deadlockC#HttpClient Post選擇正確的超時

問題 我們正在使用HttpClient.PostAsJsonAsync上傳JSON文件到服務器。但是,在最壞的情況下,這種上傳可能需要幾個小時。 這就是爲什麼只使用HttpClient.Timeout不適合我們的原因。這是一個艱難的超時時間,我們需要讓它變得巨大。

那麼當tcp連接結束並且客戶端沒有檢測到時我們該怎麼做。由於我們巨大的超時時間,我們長期堅持下去。那麼在這種情況下是否還有其他的Timeout?任何其他想法或最佳實踐? 我也在尋找tcp套接字保持活着,但這似乎並不是一個選項。

回答

0

經過一番研究,我終於找到了它描述的問題,並提供解決方法的文章: http://www.thomaslevesque.com/2014/01/14/tackling-timeout-issues-when-uploading-large-files-with-httpwebrequest/

根據這篇文章,有在HttpWebRequest的一個設計缺陷,我才得以重現。似乎荒謬的是,超時也會影響上傳。

但是,我可以使用提供的解決方法(WebRequestExtensions),因爲我們的代碼無論如何都是同步的。