asp.net-core - Odata 和 IAsyncEnumerable

标签 asp.net-core .net-core odata asp.net-core-3.1 c#-8.0

我们的应用程序 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/

相关文章:

c# - 通过 Entity Framework 和 JSON (C#) 动态更新某些属性

asp.net-core - 有没有 Session.Abandon() asp.net Core

.net-core - 具有 native 库依赖项的 .NET Core 项目

c# - 如何在 ODataQueryOptions 上启用 $expand 和 $select?

.net - .Net WebApi OData Controller 中的多个 get 方法

c# - 如何在 ASP.NET Core Identity 的 Controller 构造函数中获取登录用户名

c# - 无法将引用类库的 ASP.NET 5 发布到 Azure

asp.net-core - 包括图书馆项目中的 wwwroot?

c# - 生成 Expression.Assign 以设置小数点时出现异常?从十进制

.net - 我可以在可移植类库中使用 OData 客户端代码吗?