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 秒。
现状:
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 秒。