我在RestClient响应返回时遇到了问题,因为"StatusCode: 0,Content:,Content:)“与ErrorMessage的”请求“被取消,因为配置的HttpClient.Timeout时间为100秒。
这是url端的超时还是我的httpclient上的超时?request.timeout是对的吗?这个请求可能需要花费5+分钟,尽管由于数据的最终优化很糟糕,它只需要170 to的数据。
var client =新的RestClient(url);
RestRequest request = new RestRequest() { Method = Method.Get };
request.Timeout = 300000;
request.AddParameter("access_token", AccessToken);
request.AddParameter("start_date", StartDate.ToString("yyyy-MM-dd"));
request.AddParameter("end_date", EndDate.ToString("yyyy-MM-dd"));
request.AddParameter("offset", offset.ToString());
var response = await client.ExecuteAsync(request);
var responseWorkLoads = JObject.Parse(response.Content).SelectToken("worklogs");发布于 2022-01-26 20:16:43
有两个超时是RestSharp允许您设置的。
创建RestClient的新实例时,可以指定将使用RestOptions覆盖默认100 ms的HttpClient超时。
var client = new RestClient(new RestClientOptions { Timeout = 300000 });由于包装的HttpClient每个RestClient实例实例化和配置一次,所以设置请求超时不会覆盖该设置,否则客户端将不会是线程安全的。
另一方面,如果请求超时小于客户端超时,则请求超时将覆盖该客户端超时。RestSharp使用请求超时创建取消令牌源,因此当链接取消令牌取消时,请求将被取消。
我认为,目前RestClient也没有在客户端超时时正确设置故障原因,只有当令牌被取消时。我会为此制造一个问题。
https://stackoverflow.com/questions/70867376
复制相似问题