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

Dieser Artikel hilft Ihnen, den ThreadAbortException-Fehler zu beheben, der auftritt, wenn Sie Response.End , Response.Redirect oder Server.Transfer .

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

Problembeschreibung

Wenn Sie die Response.End Response.Redirect Server.Transfer ThreadAbortException-Ausnahme verwenden, tritt eine ThreadAbortException-Ausnahme auf. Sie können try-catch eine 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 Codezeile Response.End wird nicht ausgeführt.

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

Lösung

Um dieses Problem zu umgehen, verwenden Sie eine der folgenden Methoden:

  • Response.EndRufen Sie für die Methode auf, HttpContext.Current.ApplicationInstance.CompleteRequest anstatt die Response.End Codeausführung an das Ereignis zu Application_EndRequest umgehen.

  • Verwenden Sie für Response.Redirect , verwenden Sie eine Überladung, Response.Redirect(String URL, bool endResponse), die false für den endResponse -Parameter übergibt, um den internen Aufruf an zu unterdrücken. Response.End Zum Beispiel:

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

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

  • Server.TransferVerwenden Sie Server.Execute für stattdessen die 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 einen Haltepunkt in der Response.Write Zeile hinzu, und beachten Sie, dass dieser Haltepunkt erreicht wird. Beachten Sie beim Untersuchen der Ausnahme, dass die ThreadAbortException-Ausnahme auftritt.