System.Threading.ThreadAbortException und Response.Redirect: Ein praktischer Leitfaden
Die Verwendung von Response.Redirect()
zum Umleiten von Webseiten kann manchmal ein System.Threading.ThreadAbortException
auslösen. Dies liegt daran, dass der Server nach dem Einleiten der Umleitung die Verarbeitung des verbleibenden Codes der aktuellen Seite stoppt.
Während das Setzen von endResponse
auf false
in Response.Redirect(url, false)
diese Ausnahme verhindert, kann es zu unnötigem Ressourcenverbrauch kommen, da der Server weiterhin die Originalseite verarbeitet.
Der empfohlene Ansatz
Die effizienteste Lösung kombiniert Response.Redirect(url, false)
mit Context.ApplicationInstance.CompleteRequest()
. Dadurch wird eine saubere Weiterleitung gewährleistet, ohne dass auf der Originalseite weiterer Code ausgeführt werden muss:
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
Diese Methode signalisiert IIS eindeutig, in die Phase EndRequest
überzugehen, wodurch die Verarbeitung der Originalseite effektiv beendet wird.
Weitere Informationen zu diesem Thema, einschließlich Best Practices für den Umgang mit Weiterleitungen innerhalb von Application_Error
-Handlern, finden Sie im ausführlichen Blogbeitrag von Thomas Marquardt (Link wird bereitgestellt, falls verfügbar).
Das obige ist der detaillierte Inhalt vonResponse.Redirect und ThreadAbortException: Wie kann man es elegant vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!