Thread was being aborted.


É bastante comum vermos o seguinte erro “Thread was being aborted.” em fórums, listas e aplicações que desenvolvemos. Há vezes em que o método Response.Redirect(“url”) é chamado dentro de um código gerenciado pelo Try…Catch.

O grande problema é que o método Response.Redirect(“url”) quando chamado desta forma, internamente ele invoca o método Response.End, e este por sua vez dispara a seguinte Exception: ThreadAbortException para finalizar o processamento da página corrente. Sendo assim, se o Response.Redirect estiver sendo gerenciado pelo bloco Try, ele capturará a Exception, e assim, se existir o bloco Catch, será executado.

Como muitos não conhecem, existe um overload do método Response.Redirect(“url”, “True | False”) que além de receber a URL qual o usuário será redirecionado, recebe também um parâmetro booleano que indica se a página terá ou não o seu processamento abortado através do método Response.End. Se definirmos como False, a página é executada até o término e assim, não invocando o método Response.End, e assim o usuário é redirecionado para a nova página.

Abaixo o código interno do método Response.Redirect:

Public Sub Redirect(ByVal url As String, ByVal endResponse As Boolean)
      ‘….
      If endResponse Then
            Me.End
      End If
End Sub

E quando não informarmos o parâmetro booleano, por default é informado como True, logo, a página será finalizada através do Response.End e assim vai atirar a Exception.

Publicidade

2 comentários sobre “Thread was being aborted.

  1. no meu caso não funcinou o redirect não redireciona. A pagina fica estática ( Response.Redirect(“~\\Default.aspx”,false); break;)…

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s