c# HttpClientnt GetAsync ResponseHeadersRead 超时

c# HttpCliennt GetAsync ResponseHeadersRead Timeout

现状:

System.Net.Http.HttpClient.GetAsync 选项 ResponseHeadersRead 用于客户端从服务器流式传输数据。

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

结果将包含稍后写入文件的流。由于 ResponseHeadersRead-Option,数据不会在第一次请求时加载,而是在访问流时加载。 但是,当我从该流读取之前需要几分钟时间时,我将在

处收到超时异常
System.Net.ConnectStream.Read

我的问题:

有没有办法改变超时?

你试过timeout属性吗?

_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 秒。