4

我有一个 ASP.NET Core 应用程序。有一个从 DB 中的数据创建的报告,其大小可能有数 GB。

是否可以将数据作为来自 WebAPI 的响应以块的形式流式传输,从而最大限度地减少服务器上的内存使用?

我想要的一个非常粗略的想法是

[HttpGet]
public IActionResult HugeReport()
{
    Response.ContentType = "text/plain";
    StreamWriter sw = new StreamWriter(Response.Body);
    var doc = new SpreadsheetDocument();
    for (int i = 0; i < 100; i++)
    {
        var data = Db.Skip(i * 1000).Take(1000);
        doc.WorkbookPart.AddData(data);

    }
}

或者,如果这种方法不可行,我可以在文件系统中以块的形式构造一个文件,逐次迭代(不将整个文档加载到内存中)吗?

4

0 回答 0