1

我有一个 REST 控制器,它使用如下辅助方法以 csv 格式流式传输响应:

public static void CsvStreamHelper(IEnumerable<T> data, Stream stream)
{
    using (var writer = new StreamWriter(stream))
    {
        foreach (var line in data)
        {
            // format csv lines here
            writer.WriteLine(lineString);
        }

        writer.Flush();
    }
}

然后,我在我的控制器中使用它,例如:

public Task<IActionResult> MyController()
{
    var data = // Get data here.

    CsvStreamHelper(data, this.HttpContext.Response.Body);

    return new EmptyResult();
}

这工作正常。但是,我想在继续流式响应的同时使用带有自定义格式化程序的内容协商中间件

我可以使用我的辅助方法覆盖WriteResponseBodyAsync方法。我不确定的是,如果我在我的 Rest 控制器中使用它this.Ok(data),而不是流式传输响应,它只会构建响应并将其发送到一个块中。如何使用内容协商中间件实现流式响应?

4

0 回答 0