O ThreadAbortException ocorrerá se você usar Response.End, Response.Redirect ou Server.Transfer
Este artigo ajuda você a resolve o erro ThreadAbortException que ocorre se você usar Response.End
, Response.Redirect
ou Server.Transfer
.
Versão original do produto: ASP.NET no .NET Framework 4.5.2, ASP.NET no .NET Framework Service Pack 1 3.5
Número de KB original: 312629
Sintomas
Se você usar o Response.End
método , Response.Redirect
ou Server.Transfer
, uma exceção ThreadAbortException ocorrerá. Você pode usar uma try-catch
instrução para capturar essa exceção.
Motivo
O Response.End
método encerra a execução da página e transfere 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 e Server.Transfer
porque ambos os métodos chamam Response.End internamente.
Resoluçã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 deResponse.End
código para oApplication_EndRequest
evento.Para
Response.Redirect
, use uma sobrecarga, Response.Redirect(Url string, 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.Em
Server.Transfer
vez disso, 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 ocorre a exceção ThreadAbortException.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários