Pergunta

estou usando Server.Transfer. Tudo funciona bem, mas o log de exceção mostra a seguinte exceção.

System.Threading.ThreadAbortException: Thread was being aborted.
   at System.Threading.Thread.AbortInternal()
   at System.Threading.Thread.Abort(Object stateInfo)
   at System.Web.HttpResponse.End()
   at System.Web.HttpServerUtility.Transfer(String path, Boolean preserveForm)
   at System.Web.HttpServerUtility.Transfer(String path)

Qualquer idéia para evitar a exceção acima.

Foi útil?

Solução

Esta exceção é lançada pela chamada para Server.Transfer Para interromper a execução do método atual - exatamente a mesma coisa é jogada se você faz Response.Redirect.

As duas opções que você tem são:

  • Pegue e retire a ThreadAborTexception / reperforme oServer.Transfer
  • Certifique -se de fazer apenas Server.Transfer em lugares onde não será capturado (recomendado)

EDITAR: Risca isso, http://support.microsoft.com/kb/312629 Tem algumas outras sugestões para tentar, mas ainda recomendo o número 2 acima.

Outras dicas

Outra maneira de resolver isso é pegar o erro gerado e não retê -lo:

        catch (ThreadAbortException)
        { 
        }

Caling Server.Transfer chamará a resposta.END, que sempre lança uma ThreadABorTException. Esta é uma exceção "especial", porque, embora possa ser capturada em um bloco de captura, ele sempre será jogado no final do bloco de captura. Eu faria seu registro de erros ignorar o ThreadABorTexceptions.

Esse problema ocorre na resposta.

A solução para esse problema é a seguinte.

Para server.transfer, use o método server.execute.

Visite este link para download de exemplo de exemplo. http://jayeshsorathia.blogspot.com/2012/03/thread-was-being-aborted-error-occures.html

A substituição da resposta.END () pelo seguinte ajudou a corrigir o problema.

Resposta.flush (); Resposta.close ();

Referir Podemos usar o resposta.flush () em vez de resposta.end ()

Substituir Response.End() Com HttpContext.Current.ApplicationInstance.CompleteRequest();

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