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.CompleteRequestanstatt dieResponse.EndCodeausführung an das Ereignis zuApplication_EndRequestumgehen.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.EndZum Beispiel:Response.Redirect ("nextpage.aspx", false);Wenn Sie diese Problemumgehung verwenden, wird der folgende Code
Response.Redirectausgeführt.Server.TransferVerwenden SieServer.Executefü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.