Thread wurde abgebrochen, als wir ihn benutzen

8
  

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

ist
  

Response.Redirect ("home.aspx", false);   aber wieder tritt dieser Fehler auf.

Was ist eine gute Lösung dafür?

meine Code-Schnipsel:

%Vor%     
Kavita 01.02.2013, 05:21
quelle

3 Antworten

22

Ссылка

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).

    
AnthonyM 01.02.2013, 05:51
quelle
9

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%

Achtung

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:

    
Aristos 01.02.2013 05:50
quelle
2

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:

  1. Wenn Sie die Antwort beenden müssen, tun Sie es nicht in einem try / catch. Dies führt dazu, dass die Weiterleitung fehlschlägt.

  2. 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:

Ссылка

    
Sumo 01.02.2013 05:51
quelle

Tags und Links