c#HttpCliennt GetAsync ResponseHeaderRead超时
当前情况: System.Net.Http.HttpClient.GetAsync和ResponseHeadersRead选项在客户端用于从服务器传输数据c#HttpCliennt GetAsync ResponseHeaderRead超时,c#,asp.net-web-api,timeout,dotnet-httpclient,C#,Asp.net Web Api,Timeout,Dotnet Httpclient,当前情况: System.Net.Http.HttpClient.GetAsync和ResponseHeadersRead选项在客户端用于从服务器传输数据 Dim result = _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead) 结果将包含一个随后写入文件的流。由于ResponseHeadersRead选项,数据不会在第一次请求时加载,而是在稍后访问流时加载。 然而,当我从该流读取数据之前需要几分钟以上的
Dim result = _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead)
结果将包含一个随后写入文件的流。由于ResponseHeadersRead选项,数据不会在第一次请求时加载,而是在稍后访问流时加载。
然而,当我从该流读取数据之前需要几分钟以上的时间时,我将在
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; ...}
好的,我自己找到了解决方案: 这就是我要找的环境: 这是一个客户端设置。 使用httpclient时,可以通过以下方式进行设置:
Dim handler As New WebRequestHandler()
handler.ReadWriteTimeout = 1000
Dim httpClient = New HttpClient(handler)
默认值为300秒。是的,但不幸的是,此值对所描述的行为没有影响。我猜超时时间在服务器端。尝试另一个URI,该URI将在发送响应的第一部分之前等待90秒: