存在使用内部服务将数据从 IAsyncEnumerator 读取到 Blazor 应用中的 UI 的示例 。还存在有关如何将IAsyncEnumerator作为 Web API 控制器操作的输出发送的示例。
我还没有看到任何示例,如何在 Blazor 或 Xamarin 等客户端中使用 HttpClient 从 API 读取 IAsyncEnumerator 流。到目前为止,我所做的一切都是在 API 上的 async/await foreach 循环完成后才返回客户端上的 HttpResponseMessage 。
HttpResponseMessage response = await _httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
HttpGet 操作的内容类型应该是什么(Produces 属性)?来自 HttpClient 的请求标头上的 Accept 值应该是什么?
[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;
}
}