次の実装があります。また、デフォルトのタイムアウトは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()))
{
}
}
}
HttpClient
のデフォルトのタイムアウトは 100秒 です。
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);
}
いくつかの注意事項:
HttpService
内で変更を加えると、すべてのリクエストに影響します。リクエストごとに行う場合は、必要なタイムアウト期間をパラメーターとして渡す必要があります。CancellationTokenSource
のインスタンスを渡すことは、そのタイムアウトがTimeout
によって設定されたHttpClient
よりも小さく、HttpClient
のタイムアウトが無限でない場合に機能します。そうしないと、HttpClient
のタイムアウトが発生します。タイムアウトで作成されたタスクが表示されないので、私は助けることができません。
しかし、MSDNが言うよりも、アプリケーションの内部で System.Net.Http を使用している場合:
デフォルト値は100,000ミリ秒(100秒)です。
HttpClient.Timeout プロパティの値を変更できます
clent.Timeout = 5*1000;