ASP.NET Core с HttpClientFactory: лучшая практика?C#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET Core с HttpClientFactory: лучшая практика?

Сообщение Anonymous »

У меня есть приложение ASP.NET Core, которому необходимо циклически вызывать веб-службу.
Я создал экземпляр HostedService:

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

public class MyHostedService : IHostedService
{
public MyHostedService(IMyWebServiceClient MyWebServiceClient)
{
...
}

public Task StartAsync(CancellationToken cancellationToken)
{
while (!cancellationToken.IsCancellationRequested)
{
var result = await myWebServiceClient.CallSomeWebApi();

await Task.Delay(5000, cancellationToken);
}

return Task.CompletedTask;
}
}
который вызывает некоторую функцию из класса WebServiceClient. Класс выглядит так

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

public class MyWebServiceClient: IMyWebServiceClient
{
private readonly IHttpClientFactory httpClientFactory;

public MyWebServiceClient(IHttpClientFactory httpClientFactory)
{
this.httpClientFactory = httpClientFactory;
}

public async Task CallSomeWebApi()
{
using (var httpClient = httpClientFactory.CreateClient())
{
var requestMessage = new HttpRequestMessage(...);

var response = await httpClient.SendAsync(requestMessage);
}
}
}
Код запуска следующий:

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

public void ConfigureServices(IServiceCollection services)
{
....
services.AddHttpClient();
services.AddSingleton();
services.AddHostedService();
....
}
Может кто-нибудь сказать мне, является ли хорошей практикой циклический вызов

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

var httpClient = httpClientFactory.CreateClient()
(например, каждые 5 секунд)?
Могут ли из-за этого возникнуть какие-либо побочные эффекты? Я тестирую какой-то веб-сервер и довольно часто получаю исключение.

Запрос был отменен из-за настроенного HttpClient.Timeout, равного 100 секундам.

Может ли это быть вызвано вышеописанной реализацией или это определенно проблема сервера?

Подробнее здесь: https://stackoverflow.com/questions/702 ... t-practice
Ответить

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

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

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

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

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