ThreadAbortException tritt auf, wenn Sie Response.End, Response.Redirect oder Server.Transfer verwenden.

Dieser Artikel hilft Ihnen beim Beheben des ThreadAbortException-Fehlers, der auftritt, wenn Sie , Response.Redirectoder Server.TransferverwendenResponse.End.

Ursprüngliche Produktversion: ASP.NET am .NET Framework 4.5.2, ASP.NET auf .NET Framework 3.5 Service Pack 1
Ursprüngliche KB-Nummer: 312629

Symptome

Wenn Sie die Response.EndMethode , Response.Redirectoder Server.Transfer verwenden, tritt eine ThreadAbortException-Ausnahme auf. Sie können eine try-catch -Anweisung verwenden, um diese Ausnahme abzufangen.

Ursache

Die Response.End -Methode beendet die Seitenausführung und verschiebt die Ausführung in das Application_EndRequest-Ereignis in der Ereignispipeline der Anwendung. Die folgende Response.End Codezeile wird nicht ausgeführt.

Dieses Problem tritt in den Response.Redirect Methoden und Server.Transfer auf, da beide Methoden Response.End intern aufrufen.

Lösung

Verwenden Sie eine der folgenden Methoden, um dieses Problem zu umgehen:

  • Rufen Response.End Sie für die HttpContext.Current.ApplicationInstance.CompleteRequest -Methode anstelle von Response.End auf, um die Codeausführung für das Application_EndRequest -Ereignis zu umgehen.

  • Verwenden Sie für Response.Redirectdie Überladung Response.Redirect(String url, bool endResponse), die false für den endResponse-Parameter übergibt, um den internen Aufruf von zu Response.Endunterdrücken. Zum Beispiel:

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

    Wenn Sie diese Problemumgehung verwenden, wird der folgende Response.Redirect Code ausgeführt.

  • Server.TransferVerwenden Sie für stattdessen die Server.Execute -Methode.

Obwohl ASP.NET diese Ausnahme behandelt, können Sie die try-catch -Anweisung verwenden, um diese Ausnahme abzufangen. Zum Beispiel:

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

Fügen Sie der Response.Write Zeile einen Haltepunkt hinzu, und beachten Sie, dass dieser Haltepunkt erreicht wird. Wenn Sie die Ausnahme untersuchen, beachten Sie, dass die ThreadAbortException-Ausnahme auftritt.