У меня есть несколько действий утилиты, которые возвращают вывод текста через 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 лет назад в Classic ASP 3.0 с помощью объекта Response. Есть ли официальный способ MVC для достижения этого?
-
Обновление: использование Razor.cshtml в приложении; но не используя какие-либо представления (просто ContentResult
) для этих действий.