加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:32:18 所属栏目:asp.Net 来源:网络整理
导读:我有一些实用程序操作通过返回内容(“我的文本”,“文本/普通”)返回文本输出. 有时这些方法需要几分钟才能运行(即日志解析,数据库维护). 我想修改我的操作方法,以便一次不返回所有输出,而是在准备好时将文本流传输到客户端. 这是一个有创意的例子: public
我有一些实用程序操作通过返回内容(“我的文本”,“文本/普通”)返回文本输出.

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

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

这是一个有创意的例子:

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视图引擎等),如果直接写入响应,则您的结果将失效.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读