Ваша переменная pictures
- это просто строка.Тот факт, что эта строка является URL, не имеет смысла.Он не собирается автоматически получать данные изображения для вас;это просто строкаВам нужно будет сделать запрос на изображение через HttpClient
:
using (var response = await _httpClient.GetAsync(pictures))
{
if (response.IsSuccessStatus && response.Content != null)
{
await response.Content.CopyToAsync(DestinationStream);
}
}
Если получить экземпляр HttpClient
для работы с ходами, это может быть так просто, как просто var _httpClient = new HttpClient();
,Однако создание слишком большого количества экземпляров HttpClient
может привести к исчерпанию пула соединений, поэтому предпочтительно использовать одноэлементный или заводской шаблон.В состав ASP.NET Core 2+ встроен IHttpClientFactory
, который можно использовать для создания и извлечения HttpClient
экземпляров, так что вместо этого вы должны внедрить и использовать его.Вы также можете (в зависимости от того, где находится этот код) напрямую внедрить HttpClient
и определить экземпляр, который нужно внедрить для определенного типа в вашем Startup.cs
:
services.AddHttpClient<MyImageFetchingClass>();
Это не сработает изкоробка с вещами как контроллеры, хотя, потому что контроллеры не зарегистрированы как сервисы.Хотя вы можете изменить это, предпочтительно использовать промежуточный тип.Вы вводите HttpClient
в этот тип, а затем вводите этот тип в свой контроллер.Таким образом, логика HttpClient
инкапсулируется и хранится вне вашего контроллера.