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.End
mé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.CompleteRequest
método em vez de ignorar a execução doResponse.End
código para oApplication_EndRequest
evento.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.Redirect
será executado.Para
Server.Transfer
, use oServer.Execute
mé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.