// 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 таймаута соединения. Если мы сделали второй вызов, все проходит гладко.
Мы провели расследование и выяснили, что заголовок соединения настроен на закрытие. кажется, что TCP-соединение каким-то образом игнорирует это.
Мы пытались установить время простоя для http-соединений в IIS на 1 минуту. чтобы не оставлять соединение открытым, но это, похоже, ни к чему не приводит.
Кто-нибудь знает, что мы может продолжить расследование?
Мы используем IHttpClientFactory для подключения к внешней службе с помощью следующего кода: [code]// 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");
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"); } } [/code] Каждый раз при запуске службы мы получаем ошибку 408 таймаута соединения. Если мы сделали второй вызов, все проходит гладко. [list] [*]Мы провели расследование и выяснили, что заголовок соединения настроен на закрытие. кажется, что TCP-соединение каким-то образом игнорирует это.
[*]Мы пытались установить время простоя для http-соединений в IIS на 1 минуту. чтобы не оставлять соединение открытым, но это, похоже, ни к чему не приводит.
[/list] Кто-нибудь знает, что мы может продолжить расследование?
Мы используем IHttpClientFactory для подключения к внешней службе с помощью следующего кода:
// register service
services.AddHttpClient( NoProxy )
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler
{
UseProxy = false,
Proxy =...
Мы используем IHttpClientFactory для подключения к внешней службе с помощью следующего кода:
// register service
services.AddHttpClient( NoProxy )
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler
{
UseProxy = false,
Proxy =...
У меня происходит сбой в системе. systemd-udev.service дает сбой, как видно из журналов ниже:
Apr 03 20:15:04 dut-3 charon-systemd : sending keep alive to 194.1.1.1
Apr 03 20:15:04 dut-3 charon-systemd : sending keep alive to 194.1.1.1
Apr 03...
Доброе утро.
Мы используем IHTTPClientFactory для подключения к внешней службе, используя следующий код:
--register service
services.AddHttpClient( NoProxy )
.ConfigurePrimaryHttpMessageHandler(() =>
{
return new HttpClientHandler
{
UseProxy =...
Я пытался понять разницу между apicallattempttimeout и apicalltimeout. Что я мог понять, так это то, что apicalltimeout — это общее время, в течение которого клиентский запрос ожидает ответа, прежде чем отказаться от него, тогда как...