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

前端之家收集整理的这篇文章主要介绍了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视图引擎等),如果直接写入响应,则您的结果将失效.

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

猜你在找的asp.Net相关文章