现状:
带有选项ResponseHeadersRead的System.Net.Http.HttpClient.GetAsync在客户端用于从服务器流式传输数据。 Dim result = _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead)
结果将包含一个稍后写入文件的流。由于ResponseHeadersRead-Option,数据不会在第一个请求时加载,而是在访问流时稍后加载。 但是,当我从该流读取之前花费的时间超过几分钟时,我将在
处获得超时异常System.Net.ConnectStream.Read
我的问题:
有没有办法改变超时?
答案 0 :(得分:0)
您是否尝试过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; ...}
答案 1 :(得分:0)
好的,我自己找到了解决方案:
这是我一直在寻找的设置:
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秒。