我有一个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();
}
这很好。但是,我想在继续流式传输响应的同时将内容协商中间件与自定义格式化程序like here一起使用。
我可以使用助手方法来覆盖WriteResponseBodyAsync
方法。我不确定的是,是否可以在this.Ok(data)
之类的Rest控制器中使用它,而不是流式传输响应,它只会构建响应并将其发送为一个块。如何使用内容协商中间件实现流式响应?