Как отправить IAsyncEnumerator из WebAPI и передавать данные через HttpClient в C # 8+? - PullRequest
1 голос
/ 07 октября 2019

Примеры существуют для чтения данных из 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;
    }
}
...