C# 我可以将webapi配置为始终流式传输数据吗?

C# 我可以将webapi配置为始终流式传输数据吗?,c#,asp.net-web-api,C#,Asp.net Web Api,我有一个api,它有许多端点,可以生成我想要流式传输的惰性IEnumerable。默认情况下,webapi将缓冲整个数据集。我已经使用PushStreamContent编写了一些Coocontroller,但我觉得我做了一些错误的事情,有许多端点如下所示: [HttpGet,Route("someaction/{id}")] public async Task<HttpResponseMessage> DoSomeAction(int id,CancellationToken tok

我有一个api,它有许多端点,可以生成我想要流式传输的惰性
IEnumerable
。默认情况下,webapi将缓冲整个数据集。我已经使用
PushStreamContent
编写了一些Coocontroller,但我觉得我做了一些错误的事情,有许多端点如下所示:

[HttpGet,Route("someaction/{id}")]
public async Task<HttpResponseMessage> DoSomeAction(int id,CancellationToken token)
{
    var data = await GetDataIterator(id);
    if(data == null) return await BadRequest(...).ExecuteAsync(token);
    var response = Request.CreateResponse(HttpStatusCode.OK);
    var formatter = Configuration.Formatters.First();
    response.Content = new PushStreamContent(async (stream, content, transport) =>
    {
            await typeFormatter.WriteToStreamAsync(data.GetType(), data, stream,
                content, transport, token);
            stream.Close();
    }, "application/json");
    return response;
}
[HttpGet,Route(“someaction/{id}”)]
公共异步任务DoSomeAction(int id,CancellationToken令牌)
{
var data=等待GetDataIterator(id);
if(data==null)返回wait wait BadRequest(…).ExecuteAsync(令牌);
var response=Request.CreateResponse(HttpStatusCode.OK);
var formatter=Configuration.Formatters.First();
response.Content=新的PushStreamContent(异步(流、内容、传输)=>
{
等待typeFormatter.WriteToStreamAsync(data.GetType(),数据,流,
内容、传输、令牌);
stream.Close();
},“应用程序/json”);
返回响应;
}
虽然我看到如果我将内容设置为
,它将正常工作,但是我如何使其成为控制器的默认行为,从而不必继续编写相同的shell