更改默认超时

Change default timeout

我有以下实现。并且默认超时为 100 秒。

我想知道如何更改默认超时?

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()))
        {

        }
    }
 }

由于我们没有看到任何超时创建的任务,我无能为力。

但是如果您在应用程序的底层使用 System.Net.Http 而不是 MSDN 所说:

The default value is 100,000 milliseconds (100 seconds).

您可以更改 HttpClient.Timeout 属性

的值
clent.Timeout = 5*1000;

HttpClient 的默认超时为 100 seconds


HttpClient 超时

您可以根据自己的 HttpClient 进行调整,并在 HttpService 中设置自定义超时时间。

httpClient.Timeout = 5000;


HttpClient 请求超时

您也可以通过取消令牌定义超时 CancellationTokenSource

using (var cts = new CancellationTokenSource(new TimeSpan(0, 0, 5))
{
    await httpClient.GetAsync(url, cts.Token).ConfigureAwait(false);
}

几点说明:

  1. HttpClient 内进行更改将影响所有请求。如果你想根据请求进行,你需要将你想要的超时持续时间作为参数传递。
  2. 如果 CancellationTokenSource 的超时时间低于 HttpClient 设置的 TimeoutHttpClient 的超时时间不是无限的,则传递 CancellationTokenSource 的实例将起作用。否则,将发生 HttpClient 的超时。

client.Timeout = 5*1000; 不起作用,因为 client.Timeout 需要某种类型的东西:System.TimeSpan

我使用以下方法更改了超时值:

client.Timeout = TimeSpan.FromSeconds(10); // Timeout value is 10 seconds

您也可以使用其他方法:

仅供参考:

Timeout属性的默认值为 100 秒