Я понятия не имею, в чем проблема, поэтому я просто дам вам некоторый контекст:
Мой метод Api GET:
[Route("{name}", Name = "GetImageByName")]
public IActionResult Get(string name)
{
string imagePath = GetImagePath();
string fileName = $"{imagePath}\\{name}";
if (!System.IO.File.Exists(fileName))
return NotFound();
try
{
var image = System.IO.File.ReadAllBytes(fileName);
string extension = new FileInfo(fileName).Extension.Substring(1);
return File(image, $"image/{extension}");
}
catch (ArgumentException ex)
{
return BadRequest(ex.Message);
}
catch (PathTooLongException ex)
{
return StatusCode(414, ex.Message);
}
catch (DirectoryNotFoundException ex)
{
return NotFound(ex.Message);
}
catch (UnauthorizedAccessException)
{
return Unauthorized();
}
catch (FileNotFoundException ex)
{
return NotFound(ex.Message);
}
catch (NotSupportedException ex)
{
return StatusCode(415, ex.Message);
}
catch(Exception ex)
{
return StatusCode(500, ex.Message);
}
}
Это прекрасно работает в почтальоне: запрос GET : https://localhost: 44355 / api / Images / Sheet1.png Возвращает 200 OK и изображение
Но с. net .http httpclient не работает:
var uri = new Uri("https://localhost:44355/api/Images/Sheet1.png");
var response = await _httpClient.GetAsync(uri); //Not working and throws exception
Я также пытался загрузить изображения из моего API:
public async Task<BitmapImage> GetImage(string imageStringName)
{
var uri = new Uri("https://picsum.photos/200/300");
BitmapImage bitmapImage = new BitmapImage();
var rass = RandomAccessStreamReference.CreateFromUri(uri);
using (IRandomAccessStream stream = await rass.OpenReadAsync())
{
bitmapImage.SetSource(stream);
}
return bitmapImage;
}
Это прекрасно работает с внешним фиктивным API, но не с моим локальным API.
мой последний вопрос: почему не работает последнее решение для получения изображения из моего API? Почему не работает обычный _httpClient.GetAsyn c (Uri)? И каково на самом деле лучшее решение для получения изображений из API?