У меня есть несколько полезных действий, которые возвращают вывод текста через return Content("my text","text/plain")
.Потоковый вывод текста для продолжительного действия?
Иногда эти методы занимают несколько минут для запуска (т. Е. Синтаксический анализ журнала, обслуживание базы данных).
Я хотел бы изменить свой метод действий, чтобы вместо того, чтобы сразу возвращать весь вывод, текст будет передан клиенту, когда он будет готов.
Вот надуманный пример:
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 лет назад в классическом ASP 3.0 с использованием объекта Response. Есть ли официальный способ MVC для этого?
-
Update: с помощью Razor .cshtml в приложении; но не используя какие-либо представления (только ContentResult
) для этих действий.
Razor or aspx? Разница в том, что механизм Razor не позволяет выводить поток. – Buildstarted
мы сталкиваемся с той же проблемой, и мы также непосредственно использовали Response.OutputStream в контроллере. Мне интересно узнать, нашли ли вы какие-либо решения? –