我们的应用程序 API 使用 odata,在升级到 .net core 3.1(我们使用 .net core 2.2)之前,odata 查询能够毫无问题地处理大型数据集(用于网格导出)。但是从 3.1 开始,我们达到了 8192 的 IAsyncEnumerable 缓冲区限制。缓冲区限制的最佳解决方法是什么,增加限制是不可能的,因为用户可能导出可能超过缓冲区大小的任意数量的记录。
我确实注意到 odata 响应是分块的,所以我尝试使用 JavaScript 读取响应流,但这也会导致缓冲区异常发生。
最佳答案
我遇到了同样的问题(使用 Power BI Desktop 作为客户端应用程序的 OData/.Net Core 3.1)。
在 Controller 方法上设置页面大小为我解决了这个问题:
[EnableQuery(PageSize = 100)]
public IActionResult Get()
{
return Ok(AppDbContext.BiContracts.AsQueryable());
}
关于asp.net-core - Odata 和 IAsyncEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60742010/