Pregunta

Tenemos una aplicación que puede crear libros electrónicos. Esta aplicación tiene un módulo de exportación que crea un archivo de AIR, pero esto puede tardar un tiempo (algunos libros tienen 2500 páginas). Si exportamos obtenemos el siguiente error:

Thread was being aborted. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Threading.ThreadAbortException: Thread was being aborted.

Source Error: 
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 

[ThreadAbortException: Thread was being aborted.]
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +501
   System.Web.ApplicationStepManager.ResumeSteps(Exception error) +564
   System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +141
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +436

He cambiado el tiempo de ejecución de mi tiempo de ejecución a 3600 segundos, pero sigue fallando durante 3 minutos. así que está relacionado con el tiempo ... cada vez que nos acercamos a los 3 minutos que falla, espero que alguien pueda ayudarme.

¿Fue útil?

Solución

Creo que Paul tiene razón sobre la causa de la excepción. Tanto IIS como ASP.NET tienen configuraciones que limitan la cantidad máxima de tiempo que puede tomar una solicitud. Para ASP.NET, está en el archivo Machine.Config (busque el elemento httpRuntime, el atributoecutionTimeout). Se establece en 90 segundos en mi máquina de desarrollo.

Sin embargo, no te recomendaría que cambies esa configuración, ya que está ahí para asegurarte de que tu aplicación no se cuelgue en una solicitud incorrecta.

Las tareas de ejecución prolongada deben utilizar la ejecución asíncrona. Con la ejecución asíncrona, el trabajo real se maneja en un hilo separado. Esto libera el hilo que maneja la solicitud para manejar otras solicitudes, lo que es bueno para el rendimiento general de su aplicación.

Hay algunos buenos artículos sobre esto disponibles. Por ejemplo: http://msdn.microsoft.com/en-us/magazine /cc163725.aspx

Otros consejos

Muy a menudo, este error se produce realmente a partir de una excepción OutOfMemory. ¿Hay una InnerException disponible?

IIS tiene una protección de subproceso 'run-away' que matará un subproceso / appdomain si se ejecuta durante demasiado tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top