Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a resolver el ThreadAbortException
error que se produce si usa Response.End
, Response.Redirect
o 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.End
método , Response.Redirect
o 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 alHttpContext.Current.ApplicationInstance.CompleteRequest
método en lugar deResponse.End
para omitir la ejecución del código en elApplication_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 aResponse.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 elServer.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.