asp.net-mvc – 流文本输出长时间运行的动作?

我有一些实用程序操作通过返回内容(“我的文本”,“文本/普通”)返回文本输出.

有时这些方法需要几分钟才能运行(即日志解析,数据库维护).

我想修改我的操作方法,以便一次不返回所有输出,而是在准备好时将文本流传输到客户端.

这是一个有创意的例子:

public ActionResult SlowText()
{
    var sb = new System.Text.StringBuilder();
    sb.AppendLine("This happens quickly...");
    sb.AppendLine("Starting a slow 10 second process...");
    System.Threading.Thread.Sleep(10000);
    sb.AppendLine("All done with 10 second process!");
    return Content(sb.ToString(),"text/plain");
}

如所写,此操作将在10秒后返回三行文本.我想要的是一种保持响应流打开的方法,并且立即返回前两行,然后在10秒后返回第三行.

我记得10年前在Classic ASP 3.0中使用Response对象.有没有官方的,MVC友好的方式来完成这个?

更新:在应用程序中使用Razor .cshtml;但不会对这些操作使用任何视图(只是ContentResult).

解决方法

直接写入Response对象应该可以工作,但只能在一些简单的情况下.许多MVC功能取决于输出写入器替换(例如部分视图,Razor视图引擎等),如果直接写入响应,则您的结果将失效.

但是,如果您不使用视图,而是直接在控制器中写入,那么您应该是正常的(假设您的操作未被称为子操作).

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....