ASP.NET Core 使用 IAsyncEnumerate 作为输入参数

ASP.NET Core use IAsyncEnumerate as input parameter

提问人:GLuca74 提问时间:7/31/2022 更新时间:7/31/2022 访问量:237

问:

在 ASP.NET 核心 WebApi 应用程序中,我成功地被控制器用作返回类型。 现在我想知道我是否可以(以及如何)用作输入参数。 像这样的东西:IAsyncEnumerable<T>IAsyncEnumerable<T>

[Route("Operation")]
[HttpPost]
public async Task Operation(IAsyncEnumerable<Entity> commands)
{
        await foreach (Entity command in commands)
        {
            // do something
        }
}

我搜索了一些文章,但我只找到了关于如何退货的文章。

有没有办法用作输入参数?IAsyncEnumerable<T>

C# ASP.NET-Core HTTP-Streaming IAsyncenumerable

评论

0赞 TcKs 7/31/2022
在处理整个请求并反序列化参数之前,不会调用控制器操作。因此,不需要 IAsyncEnumerable<T>因为所有数据都已加载。
0赞 GLuca74 7/31/2022
由于命令列表可能很长,我希望有一种方法可以开始处理命令列表而无需等待整个列表在内存中反序列化。
0赞 TcKs 7/31/2022
Afaik 只有通过手动解析正文才能实现。learn.microsoft.com/en-us/aspnet/core/performance/......
0赞 GLuca74 7/31/2022
抱歉,我在您发送的链接中找不到如何手动解析正文
0赞 Deepak-MSFT 8/1/2022
如果使用的是 Asp.Net Core 6.0,并且可以使用 System.Text.Json,则在使用 System.Text.Json 进行格式设置时,MVC 不再缓冲 IAsyncEnumerable<T> 实例。您可以在此链接中查看详细信息

答: 暂无答案