System.Threading.ThreadAbortException: Thread wurde abgebrochen.
bei System.Threading.Thread.AbortInternal () um System.Threading.Thread.Abort (Objekt stateInfo) um System.Web.HttpResponse.End () um System.Web.HttpResponse.Redirect (String url, Boolean endResponse)
bei System.Web.HttpResponse.Redirect (String-URL) um taxi_selection.lnkbtnconfirm_Click (Objektabsender, EventArgs e)
Ich fand, dass die Lösung dafür
istResponse.Redirect ("home.aspx", false); aber wieder tritt dieser Fehler auf.
Was ist eine gute Lösung dafür?
meine Code-Schnipsel:
%Vor%Wie Sie hier sehen können, versuchen Sie in einem try / catch-Block response.redirect zu verwenden. Es hat eine Ausnahme ausgelöst.
Ihre Lösung, den Anruf so zu ändern, dass er Response.Redirect(url, false)
lautet, sollte funktionieren. Sie müssen sicherstellen, dass Sie dies bei jedem Response.Redirect-Aufruf tun.
Beachten Sie auch, dass dies die Ausführung fortsetzt, so dass Sie damit umgehen müssen (verhindern, dass es auf andere Weise fortgesetzt wird).
So funktioniert die Umleitung, wenn Sie den Rest der Seite nicht weiter ausführen lassen. Sie stoppen den Thread und werfen die Abbruch-Ausnahme ab. Sie können es einfach ignorieren als:
%Vor%Wenn Sie die Weiterleitung aufrufen, ohne den Rest der Verarbeitung zu stoppen, kann ein Hack den Weiterleitungsprozess mit einem Plugin wie dem NoRedirect kann Ihren Rest der Seite sehen.!
Um meinen Punkt hier zu beweisen, stelle ich eine Frage über:
Response.Redirect
ohne Angabe des Parameters endResponse
als false
(Standard ist true
) ruft Response.End()
intern auf und löst daher einen ThreadAbortException
aus, um die Ausführung zu stoppen.
Eins von zwei Dingen wird hier empfohlen:
Wenn Sie die Antwort beenden müssen, tun Sie es nicht in einem try / catch. Dies führt dazu, dass die Weiterleitung fehlschlägt.
Wenn Sie die Antwort nicht beenden müssen, rufen Sie stattdessen Folgendes auf:
Response.Redirect (URL, falsch);
Innerhalb von try / catch:
%Vor%Um Postback-Handling und HTML-Rendering zu vermeiden, müssen Sie mehr tun: