PRB: ThreadAbortException bei Verwendung von Response.End, Response.Redirect oder Server.Transfer

Problembeschreibung

Verwenden Sie die Response.End, Response.Redirectoder
Methode Server.Transfer tritt eine ThreadAbortException -Ausnahme. Try-Catch -Anweisung können diese Ausnahme abfangen.

Ursache

Die Methode Response.End beendet die seitenausführung und verlagert die Ausführung auf das Ereignis Application_EndRequest in der Ereignispipeline der Anwendung. Die Codezeile, die Response.End folgt wird nicht ausgeführt.

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

Problemlösung

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

  • Für Response.EndAufrufen der HttpContext.Current.ApplicationInstance.CompleteRequest -Methode Response.End die Ausführung von Code auf das Ereignis Application_EndRequest umgehen.
  • Response.Redirectverwenden Sie eine Überladung Response.Redirect (String Url, Bool EndResponse) , die falsche Parameter EndResponse interner Aufruf von Response.Endzu übergeben. Beispiel:
      Response.Redirect ("nextpage.aspx", false);
    Wenn Sie diese Methode verwenden, wird Response.Redirect der folgende Code ausgeführt.
  • Verwenden Sie für Server.Transfer Server.Execute -Methode stattdessen.

Status

Dieses Verhalten ist entwurfsbedingt.
Eigenschaften

Artikelnummer: 312629 – Letzte Überarbeitung: 20.01.2017 – Revision: 1

Feedback