Compartir a través de


ThreadAbortException se produce si usa Response.End, Response.Redirect o Server.Transfer

Este artículo le ayuda a resolver el ThreadAbortException error que se produce si usa Response.End, Response.Redirecto Server.Transfer.

Versión original del producto: ASP.NET en .NET Framework 4.6.2 o posterior, ASP.NET en .NET Framework 3.5 Service Pack 1
Número de KB original: 312629

Síntomas

Si usa el Response.Endmétodo , Response.Redirecto Server.Transfer , se produce una ThreadAbortException excepción. Puede usar una try-catch instrucción para detectar esta excepción.

Causa

El Response.End método finaliza la ejecución de la página y desplaza la ejecución al evento Application_EndRequest en la canalización de eventos de la aplicación. No se ejecuta la línea de código siguiente Response.End .

Este problema se produce en los Response.Redirect métodos y Server.Transfer porque ambos métodos llaman a Response.End internamente.

Solución

Para solucionar este problema, use uno de los métodos siguientes:

  • Para Response.End , llame al HttpContext.Current.ApplicationInstance.CompleteRequest método en lugar de Response.End para omitir la ejecución del código en el Application_EndRequest evento.

  • Para Response.Redirect, use una sobrecarga, Response.Redirect(String url, bool endResponse) que pasa false para el parámetro endResponse para suprimir la llamada interna a Response.End. Por ejemplo:

    Response.Redirect ("nextpage.aspx", false);
    

    Si usa esta solución alternativa, se ejecuta el código siguiente Response.Redirect .

  • En Server.Transfer, use el Server.Execute método en su lugar.

Aunque ASP.NET controla esta excepción, puede usar la try-catch instrucción para detectar esta excepción. Por ejemplo:

try
{
    Response.Redirect("nextpage.aspx");
}
catch (Exception ex)
{
    Response.Write (ex.Message);
}

Agregue un punto de interrupción en la Response.Write línea y observe que se alcanza este punto de interrupción. Al examinar la excepción, observe que se produce la ThreadAbortException excepción.