簡體   English   中英

C#HttpCliennt GetAsync ResponseHeadersRead超時

[英]c# HttpCliennt GetAsync ResponseHeadersRead Timeout

現在的情況:

帶有選項ResponseHeadersRead的System.Net.Http.HttpClient.GetAsync在客戶端上用於從服務器流數據。

 Dim result = _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead)

結果將包含一個流,稍后將其寫入文件。 由於ResponseHeadersRead-Option,將不會在第一個請求時加載數據,而是在訪問流時稍后加載數據。 但是,當我花了幾分鍾才從該流中讀取內容時,我將在

System.Net.ConnectStream.Read

我的問題:

有沒有辦法改變超時時間?

您是否嘗試過超時屬性?

_httpClient.Timeout = TimeSpan.FromSeconds(30); // 30 seconds
var result = _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);

您是否使用過ContinueWith

_httpClient.GetAsync(url).ContinueWith(task => { var response = task.Result; ...}

好的,我自己找到了解決方案:

這是我一直在尋找的設置:

https://msdn.microsoft.com/de-de/library/system.net.httpwebrequest.readwritetimeout(v=vs.110).aspx

這是客戶端設置。 使用httpclient時,可以通過以下方式進行設置:

  Dim handler As New WebRequestHandler()
  handler.ReadWriteTimeout = 1000
  Dim httpClient = New HttpClient(handler)

默認值為300秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM