Tengo una aplicación donde necesito que el usuario cargue una foto. Después de que la foto se cargue en el servidor, lo que no debería llevar mucho tiempo, el usuario debería obtener una respuesta que es una página HTML normal que dice "gracias ... bla bla bla ..."
Ahora, después de la respuesta se envía de vuelta al cliente y él sigue su camino feliz, quiero que el servidor continúe trabajando en esta foto. Necesita hacer algo que sea pesado y llevaría mucho tiempo. Pero esto está bien porque el usuario no está esperando nada. Probablemente esté en una página diferente.
Así que mi pregunta es, ¿cómo hago esto con ASP.NET. La aplicación que estoy escribiendo es en ASP.NET MVC así que estoy imaginando algo así como¿Cómo continúo trabajando en el servidor después de devolver una respuesta con ASP.NET? (WebForms y MVC)
//save the photo on the server
//and send viewdata saying "thanks..."
return View();
//keep doing heavy processing on the photo
Pero supongo que esto no es realmente cómo se hace. Además, como a veces trabajo con ASP.NET WebForms, ¿cómo se hace esto con WebForms también?
¡Gracias!
Y termina con una posible pérdida de memoria. Uno siempre debe llamar a EndInvoke. – leppie
Quizás, pero no siempre. Caveat Emptor. Primero recogió la idea de Rick Strahls blos http://www.west-wind.com/WebLog/posts/368975.aspx El pensamiento/prueba actual es que no se producen 'filtraciones' si no se hace referencia al valor de retorno IAsync, se limpia después de que el delegado finaliza. –
Diciendo que, en lecturas posteriores, volveré a visitar este frente a ThreadPool.QueueUserWorkItem .. ambos utilizan el grupo de subprocesos y, aunque este último es más rápido, ambos pueden interrumpir el servidor bajo carga, y se puede necesitar un enfoque diferente. –