I have the following implementation. And the default timeout is 100 seconds.
I wonder how can I able to change the default timeout?
HttpService.cs
public class HttpService : IHttpService
{
private static async Task GoRequestAsync<T>(string url, Dictionary<string, object> parameters, HttpMethod method,
Action<T> successAction, Action<Exception> errorAction = null, string body = "")
where T : class
{
using (var httpClient = new HttpClient(new HttpClientHandler()))
{
}
}
}
The default timeout of an HttpClient
is 100 seconds.
HttpClient Timeout
You can adjust to your HttpClient
and set a custom timeout duration inside of your HttpService
.
httpClient.Timeout = 5000;
HttpClient Request Timeout
You could alternatively define a timeout via a cancellation token CancellationTokenSource
using (var cts = new CancellationTokenSource(new TimeSpan(0, 0, 5))
{
await httpClient.GetAsync(url, cts.Token).ConfigureAwait(false);
}
A few notes:
HttpService
will affect all requests. If you want to make it per request you will need to pass through your desired timeout duration as a parameter.CancellationTokenSource
will work if it's timeout is lower than Timeout
set by the HttpClient
and HttpClient
's timeout is not infinite. Otherwise, the HttpClient
's timeout will take place.