Tengo algunas acciones de utilidad que devuelven texto a través del return Content("my text","text/plain")
.Transmisión de salida de texto para acción prolongada?
A veces, estos métodos tardan unos minutos en ejecutarse (es decir, análisis de registro, mantenimiento de la base de datos).
Me gustaría modificar mi método de acción para que en lugar de devolver todo el resultado a la vez, el texto se transmita al cliente cuando esté listo.
Aquí está un ejemplo artificioso:
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");
}
Como está escrito, esta acción volverá tres líneas de texto después de 10 segundos. Lo que quiero es una forma de mantener abierta la secuencia de respuesta y devolver las dos primeras líneas inmediatamente, y luego la tercera línea después de 10 segundos.
Recuerdo hacer esto hace más de 10 años en Classic ASP 3.0 usando el objeto Response. ¿Hay alguna forma oficial de MVC para lograr esto?
-
Actualización: el uso de la maquinilla de afeitar .cshtml en la aplicación; pero no usando ninguna vista (solo ContentResult
) para estas acciones.
¿Navaja o aspx? La diferencia es que el motor Razor no permite la salida de transmisión. – Buildstarted
nos encontramos con el mismo problema y también utilizamos directamente Response.OutputStream en el controlador. Tengo curiosidad por saber si encuentras alguna solución? –