RestSharp.RestClient忽略超时

时间:2017-05-22 09:54:04

标签: .net asp.net-core timeout restsharp

我正在使用RestSharp.RestClient(105.2.4-rc4-24214-01)开发.net核心应用程序。 我设置了

RestClient.Timeout=1 

RestClient.Timeout=10000

然后调用我的测试API

var tcs = new TaskCompletionSource<IRestResponse>();
RestClient.ExecuteAsync(request, response => { tcs.SetResult(response); })
return tcs.Task.Result;

但它仍然使用默认值100000并生成“任务已取消”。异常仅在100000毫秒之后。

如何更改此值?

2 个答案:

答案 0 :(得分:1)

文档说Request.Timeout覆盖了RestClient.Timeout。 试试这个:

var tcs = new TaskCompletionSource<IRestResponse>();
request.Timeout = 10000;
RestClient.ExecuteAsync(request, response => { tcs.SetResult(response); })
return tcs.Task.Result;

答案 1 :(得分:0)

您可以使用CancellationTokenSource并使用其令牌中止句柄以响应。 请尝试使用以下代码进行10秒超时

System.Threading.CancellationTokenSource cts = new  System.Threading.CancellationTokenSource ();
 cts.CancelAfter (TimeSpan.FromMilliseconds(10000));
var tcs = new TaskCompletionSource<IRestResponse>();
 RestRequestAsyncHandle handle = RestClient.ExecuteAsync(request, response => { tcs.SetResult(response); })
 using (cts.Token.Register(() => handle.Abort()))
        {
        return (RestResponse)(await tcs.Task);
        }

希望它有所帮助!!