Фабрика Ihttpclient всегда выдает тайм-аут в первом запросеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Фабрика Ihttpclient всегда выдает тайм-аут в первом запросе

Сообщение Anonymous »

Доброе утро.
Мы используем IHTTPClientFactory для подключения к внешней службе, используя следующий код:

Код: Выделить всё

    --register service
services.AddHttpClient("NoProxy")
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler
{
UseProxy = false,
Proxy = null
};
});

--g2g function
public async Task GetResponseUsingFactory(CitizenReq request)
{
var json = JsonConvert.SerializeObject(request);
var data = new StringContent(json, Encoding.UTF8, "application/json");

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback =
delegate (object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true; // Always accept
};

var client = _httpClientFactory.CreateClient("NoProxy");
client.DefaultRequestHeaders.Add("user_key", _apiKey);

//client.DefaultRequestHeaders.ConnectionClose = _keep_alive;
client.DefaultRequestHeaders.Add("Connection", _connection);

_logger.LogInformation($"API request : {JsonConvert.SerializeObject(request)}");

var response = new HttpResponseMessage();

response = await _retryPolicy.JustHttpRetry.ExecuteAsync(() =>
client.PostAsync($"{_g2gUrl}/api/validateCitizenData", data));

if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
_logger.LogInformation($"API response : {JsonConvert.SerializeObject(response)}");
return JsonConvert.DeserializeObject(result,
new JsonSerializerSettings() { MissingMemberHandling = MissingMemberHandling.Ignore })!;
}
else
{
//send email
await FailedNotification();
throw new Exception("G2G API is down");
}

}
каждый раз при запуске службы мы получаем ошибку таймаута соединения 408. если мы сделали второй вызов, все проходит гладко.
1 — мы провели расследование и выяснили, что заголовок соединения не установлен на закрытие. фабрика клиента, похоже, не может предоставить его сеансу, хотя мы это явно запрограммировали.
2-Мы пытались установить время простоя для http-соединений в IIS на 1 минута, чтобы не оставлять соединение открытым, но, похоже, это ни к чему не приводит.
у кого-нибудь есть идеи, что мы можем исследовать дальше?

Подробнее здесь: https://stackoverflow.com/questions/791 ... st-request
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • IHttpClientFactory всегда вызывает тайм-аут при первом запросе.
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • IHttpClientFactory всегда вызывает тайм-аут при первом запросе.
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • IHttpClientFactory всегда вызывает тайм-аут при первом запросе.
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Вызывает ли сбой тайм-аут сторожевого таймера или тайм-аут является результатом сбоя?
    Anonymous » » в форуме Linux
    0 Ответы
    159 Просмотры
    Последнее сообщение Anonymous
  • Тайм-аут вызова API и тайм-аут попытки вызова API dynamodb
    Anonymous » » в форуме JAVA
    0 Ответы
    123 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»