在ASP.NET Minimal API中传输持续流可以使用C#异步方法和HTTP Chunked传输编码。以下是一个示例,该示例将在HTTP响应中发送无限流(每隔1秒发送一个数字)并在通过Ctrl + C停止应用程序时停止:
public static async Task Main()
{
await using var app = WebApplication.Create();
app.MapGet("/", async (http) =>
{
http.Response.Headers.Add("Transfer-Encoding", "chunked");
http.Response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
int count = 0;
while (!http.RequestAborted.IsCancellationRequested)
{
var data = Encoding.UTF8.GetBytes((count++).ToString() + "\n");
await http.Response.Body.WriteAsync(data);
await http.Response.Body.FlushAsync();
await Task.Delay(TimeSpan.FromSeconds(1));
}
});
await app.RunAsync();
}