Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo ajuda a resolver o ThreadAbortException erro que ocorre se você usar Response.End, Response.Redirect, ou Server.Transfer.
Versão original do produto: ASP.NET no .NET Framework 4.6.2 ou posterior ASP.NET no .NET Framework 3.5 Service Pack 1
Número original da base de conhecimento: 312629
Sintomas
Se você usar o Response.Endmétodo , Response.Redirect, ou Server.Transfer , ocorrerá uma ThreadAbortException exceção. Você pode usar uma try-catch instrução para capturar essa exceção.
Causa
O Response.End método encerra a execução da página e muda a execução para o evento Application_EndRequest no pipeline de eventos do aplicativo. A linha de código a seguir Response.End não é executada.
Esse problema ocorre nos Response.Redirect métodos and Server.Transfer porque ambos os métodos chamam Response.End internamente.
Solução
Para contornar esse problema, use um dos seguintes métodos:
Para
Response.End, chame oHttpContext.Current.ApplicationInstance.CompleteRequestmétodo em vez de ignorar a execução doResponse.Endcódigo para oApplication_EndRequestevento.Para
Response.Redirect, use uma sobrecarga, Response.Redirect(String url, bool endResponse) que passa false para o parâmetro endResponse para suprimir a chamada interna paraResponse.End. Por exemplo:Response.Redirect ("nextpage.aspx", false);Se você usar essa solução alternativa, o código a seguir
Response.Redirectserá executado.Para
Server.Transfer, use oServer.Executemétodo.
Embora ASP.NET manipule essa exceção, você pode usar a try-catch instrução para capturar essa exceção. Por exemplo:
try
{
Response.Redirect("nextpage.aspx");
}
catch (Exception ex)
{
Response.Write (ex.Message);
}
Adicione um ponto de interrupção na Response.Write linha e observe que esse ponto de interrupção foi atingido. Ao examinar a exceção, observe que a ThreadAbortException exceção ocorre.