Примеры существуют для чтения данных из IAsyncEnumerator в пользовательский интерфейс в приложении Blazor с использованием внутренней службы. Примеры также существуют о том, как отправить IAsyncEnumerator в качестве вывода из действия контроллера Web API.
Я еще не видел примеров того, как читать поток IAsyncEnumerator из API, используя HttpClient внутри клиента, такого как Blazor или Xamarin. Все, что я до сих пор пробовал, только возвращает HttpResponseMessage на клиенте после того, как цикл foreyn async / await на API сделан.
HttpResponseMessage response = await _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
Каким должен быть тип содержимого (атрибут Produces) в действии HttpGet? Каким должно быть значение Accept в заголовке запроса от HttpClient?
[HttpGet]
[Produces("application/json")]
public async IAsyncEnumerable<Data> Get(CancellationToken cancellationToken)
{
var dbSet = _dbContext.TableName.AsNoTracking().AsAsyncEnumerable().WithCancellation(cancellationToken).ConfigureAwait(false);
await foreach (var i in dbSet.ConfigureAwait(false))
{
var item = new Data
{
Id = i.Id,
Name = i.Name
};
yield return item;
}
}