.net core 2.1 - httpclientfactory - Ошибка - этот экземпляр уже запустил один или несколько запросов - PullRequest
0 голосов
/ 03 декабря 2018

Мы используем .net core 2.1 и используем httpclientfactory в нашем приложении.

Мы зарегистрировали службу с использованием services.AddTransient в startup.cs

При вызове первого API из кода все работаетхорошо.

Когда мы вызываем второй API, его выдача «Этот экземпляр уже запустил один или несколько запросов. Свойства могут быть изменены только перед отправкой первого запроса.»

Я получил ошибку при установке тайм-аута для _httpClient.

private readonly HttpClient _httpClient;

public ApiClient(IHttpClientFactory httpClientFactory)
{
     _httpClient = httpClientFactory.CreateClient();
}   

public async Task<IResponse> PutJsonAsync<IResponse, IRequest>(Uri uri, int? timeOut)
{
    SetTimeout(timeOut);
    var response = await _httpClient.PutAsync(uri, content).ConfigureAwait(false);
    ...
    ...
}

private void SetTimeout(int? timeOut)
{
    if (timeOut.HasValue)
    {
        _httpClient.Timeout = new TimeSpan(0, 0, 0, timeOut.Value);
    }
}

Требование заключается в том, что мне нужно установить таймаут для каждого API.

Как мы можем этого достичь?

...