Gestion de l'exception System.Threading.ThreadAbort dans les redirections ASP.NET
L'utilisation de Response.Redirect()
dans ASP.NET peut parfois générer un System.Threading.ThreadAbortException
. Cela se produit parce que le serveur met fin à l'exécution de la page en cours après la redirection. Définir endResponse
sur true
dans Response.Redirect()
évite l'exception, mais permet un traitement inutile après la redirection, ce qui est inefficace.
La meilleure approche
La solution idéale est d'utiliser Response.Redirect()
avec endResponse
défini sur false
, suivi de Context.ApplicationInstance.CompleteRequest()
. Cela redirige proprement sans exception :
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
Cela indique au pipeline IIS de passer immédiatement à l'étape EndRequest
, empêchant ainsi le traitement ultérieur de la page actuelle.
Lectures complémentaires
Pour une explication plus détaillée, y compris la gestion des redirections au sein d'un gestionnaire Application_Error
, consultez l'article de blog perspicace de Thomas Marquardt (le lien vers l'article de blog serait inséré ici s'il est disponible). Cette approche garantit des redirections efficaces et sans exception dans vos applications ASP.NET.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!