我有一个restsharp客户端和请求设置如下:
var request = new RestRequest();
request.Method = Method.POST;
request.AddParameter("application/json", jsonBody, ParameterType.RequestBody);
request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };
request.Timeout = -1;
request.ReadWriteTimeout = -1;
var url = $"http://{ipAddress}/api/calculate";
var client = new RestClient();
client.BaseUrl = new Uri(url);
client.Timeout = -1;
client.ReadWriteTimeout = -1;
var response = client.Execute(request);
这个请求需要一段时间才能完成,大约30分钟。现在,我知道有更优雅的方法来完成这个请求,但是,对于这个请求,我需要这样做。
此RestSharp客户端和请求在Windows服务内执行。当服务执行请求时,它会引发TimoutException,请求最大超时约为40秒。
由于某种原因,我设置的超时不适用于这种情况。
有人能解决这个问题吗?
3条答案
按热度按时间aydmsdu91#
溶液(版本107+)
旧版本:
将默认超时更改为:5秒-例如-(即5000毫秒):
mwg9r5ms2#
设置
ReadWriteTimeout
的值可能不是你所想的那样。你的值被忽略了,所以你得到了默认值。根据这个答案,What is default timeout value of RestSharp RestClient? RestSharp在其实现中使用
HttpWebRequest
。HttpWebRequest
的超时属性不能为负HttpWebRequest.Timeout Property。如果您查看RestSharp客户端代码,您会看到以下内容:https://github.com/restsharp/RestSharp/blob/70de357b0b9dfc3926c95d1e69967c7a7cbe874c/RestSharp/RestClient.cs#L452
093gszye3#
更新至RestSharp v106.2.2。
参见https://github.com/restsharp/RestSharp/issues/1093