Pergunta

Nós temos uma aplicação que pode criar e-books. Esta aplicação tem um módulo de exportação que cria um arquivo AIR mas isso pode levar algum tempo (alguns livros tem 2500 páginas). Se nós exportamos temos o seguinte erro:

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

Eu mudei de runtime executionTimeout a 3600 segundos, mas continua falhando espalhados 3 minutos. por isso está relacionado vez ... cada vez que nos aproximamos dos 3 minutos, ele trava, espero que alguém possa me ajudar.

Foi útil?

Solução

Eu acho que Paul está certo sobre a causa da exceção. Ambos IIS e ASP.NET têm configurações que limitam a quantidade máxima de tempo que uma solicitação pode tomar. Para ASP.NET é no arquivo Machine (olhar para o elemento httpRuntime, atributo executionTimeout). Ele é definido como 90 segundos em minha máquina de desenvolvimento.

No entanto, gostaria não aconselhá-lo a mudar essa configuração como ele está lá para se certificar de seu aplicativo não pendurar em um mau pedido.

longas tarefas em execução deve usar a execução assíncrona. Com a execução assíncrona, o trabalho real é tratado em um segmento separado. Isso libera o segmento que processa o pedido para lidar com outras solicitações que é bom para o desempenho geral de sua aplicação.

Há alguns bons artigos sobre este disponível. Por exemplo: http://msdn.microsoft.com/en-us/magazine /cc163725.aspx

Outras dicas

Muitas vezes, esse erro realmente ocorre a partir de uma exceção OutOfMemory. Existe uma InnerException disponíveis?

O IIS tem uma proteção rosca 'run-away', que irá matar uma thread / appdomain se ele é executado por muito tempo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top