У меня есть контроллер на C#, который вызывает класс, который, в свою очередь, отправляет HTTP-запросы и возвращает ответ в соответствии с приведенной ниже последовательностью кода:
Я добавил следующую строку в Program.cs:
builder.Services.AddHttpClient(); Я создал класс, который получает вызов контроллера и отправляет HTTP-запрос на внешний веб-сайт.
Пользователи общедоступного класса { общедоступная асинхронная задача GetUsers(HttpClient _httpClient) { var request = new HttpRequestMessage(new HttpMethod("get"), "https://gorest.co.in/public/v2/users"); вар res = ждут _httpClient.SendAsync(запрос); var content = ждут res.Content.ReadAsStringAsync(); возврат контента; } } Я создал контроллер для получения моих HTTP-запросов, и этот контроллер создает экземпляр клиента через IHttpClientFactory, чтобы избежать исчерпания HTTP-сокетов...
[Route("api/[controller]")] общедоступный класс UsersController: ControllerBase { частный только для чтения IHttpClientFactory _client; общедоступный UsersController (клиент IHttpClientFactory) { _клиент = клиент; } общедоступный класс UsersModel { общественный ИНТ идентификатор {получить; набор; } имя публичной строки {get; набор; } публичная строка электронная почта {get; набор; } публичная строка пол { get; набор; } статус публичной строки {get; набор; } } [HttpGet("GetUsers")] общедоступная асинхронная задача GetUsers() { вар myClient = _client.CreateClient(); return Newtonsoft.Json.JsonConvert.DeserializeObject(ожидайте новых пользователей().GetUsers(myClient)); } } Хорошо, приведенная выше последовательность кода выполняет свою работу правильно, но есть одна вещь, которая меня очень беспокоит: внедрение зависимостей и создание HTTP-клиента в каждом контроллере, вызывающем этот класс.
Я хотел бы создать класс, который принимает вызов контроллера, но этот класс сам создает свой HTTP-клиент, без необходимости его передачи контроллером в качестве параметра...
Я попробовал что-то вроде этого: я изменил свой контроллер, чтобы он больше не имел внедрения зависимостей, а просто вызывал класс:
[Route("api/[controller]")] общедоступный класс UsersController: ControllerBase { общедоступный класс UsersModel { общественный ИНТ идентификатор {получить; набор; } имя публичной строки {get; набор; } публичная строка электронная почта {get; набор; } публичная строка пол { get; набор; } статус публичной строки {get; набор; } } [HttpGet("GetUsers")] общедоступная асинхронная задача GetUsers() { return Newtonsoft.Json.JsonConvert.DeserializeObject(ожидайте новых пользователей().GetUsers()); } } Класс, в свою очередь, будет отвечать за создание HTTP-клиента.
Пользователи общедоступного класса { частный только для чтения IHttpClientFactory _client; общедоступные пользователи (клиент IHttpClientFactory) { _клиент = клиент; } публичная асинхронная задача GetUsers() { вар _httpClient = _client.CreateClient(); var request = new HttpRequestMessage(new HttpMethod("get"), "https://gorest.co.in/public/v2/users"); вар res = ждут _httpClient.SendAsync(запрос); var content = ждут res.Content.ReadAsStringAsync(); возврат контента; } } Но теперь я получаю эту ошибку:

Я видел, как некоторые люди говорили, что им нужно реализовать конструктор, вставить : base()... но признаюсь, что я не на достаточном уровне, чтобы решить эту проблему самостоятельно. Буду очень признателен, если кто-нибудь поможет мне с этой задачей.