RESTSHARP超时不起作用



我有一个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秒。

由于某种原因,我设置的超时对这种情况不起作用。

任何人都有解决方案?

解决方案(版本107 )

var options = new RestClientOptions("baseURL") {
    ThrowOnAnyError = true,
    Timeout = 1000  // 1 second - thanks to @JohnMc
};
var client = new RestClient(options);

较旧版本:

将默认时间更改为:5秒 - 例如 - (即5000毫秒):

    var client = new RestClient("BaseUrl");
    client.Timeout = 5000; // 5000 milliseconds == 5 seconds

您可能不会通过设置ReadWriteTimeout值来做自己的想法。您的价值被忽略,因此您会得到默认值。

根据此答案,什么是RESTSHARP RESTClient的默认超时值?RESTSHARP在其实现中使用HttpWebRequest

HttpWebRequest的超时属性不能为负httpwebrequest.timeout属性。

        int readWriteTimeout = request.ReadWriteTimeout > 0
            ? request.ReadWriteTimeout
            : this.ReadWriteTimeout;
        if (readWriteTimeout > 0)
        {
            http.ReadWriteTimeout = readWriteTimeout;
        }

更新为retsharp v106.2.2。
请参阅https://github.com/restsharp/restsharp/issues/1093

相关内容

  • 没有找到相关文章