Behandlung der System.Threading.ThreadAbortException in ASP.NET-Weiterleitungen
Die Verwendung von Response.Redirect()
in ASP.NET kann manchmal zu einem System.Threading.ThreadAbortException
führen. Dies geschieht, weil der Server die aktuelle Seitenausführung nach der Umleitung beendet. Durch das Setzen von endResponse
auf true
in Response.Redirect()
wird die Ausnahme vermieden, aber eine unnötige Verarbeitung nach der Umleitung ermöglicht, was ineffizient ist.
Der beste Ansatz
Die ideale Lösung besteht darin, Response.Redirect()
zu verwenden, wobei endResponse
auf false
gesetzt ist, gefolgt von Context.ApplicationInstance.CompleteRequest()
. Dadurch wird ohne Ausnahme sauber umgeleitet:
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
Dadurch wird die IIS-Pipeline angewiesen, sofort mit der EndRequest
-Stufe fortzufahren, wodurch eine weitere Verarbeitung der aktuellen Seite verhindert wird.
Weiterführende Literatur
Eine ausführlichere Erklärung, einschließlich der Handhabung von Weiterleitungen innerhalb eines Application_Error
-Handlers, finden Sie in Thomas Marquardts aufschlussreichem Blogbeitrag (Link zum Blogbeitrag wird hier eingefügt, falls verfügbar). Dieser Ansatz gewährleistet effiziente und ausnahmefreie Weiterleitungen in Ihren ASP.NET-Anwendungen.
Das obige ist der detaillierte Inhalt vonWie vermeide ich System.Threading.ThreadAbortException während Response.Redirect?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!