System.Threading.ThreadAbortException et Response.Redirect : un guide pratique
Utiliser Response.Redirect()
pour rediriger des pages Web peut parfois déclencher un System.Threading.ThreadAbortException
. Cela se produit parce que le serveur arrête de traiter le code restant de la page actuelle après avoir lancé la redirection.
Bien que définir endResponse
sur false
dans Response.Redirect(url, false)
empêche cette exception, cela peut entraîner une consommation inutile de ressources lorsque le serveur continue de traiter la page d'origine.
L'approche recommandée
La solution la plus efficace combine Response.Redirect(url, false)
avec Context.ApplicationInstance.CompleteRequest()
. Cela garantit une redirection propre sans exécuter de code supplémentaire sur la page d'origine :
<code class="language-csharp">Response.Redirect(url, false); Context.ApplicationInstance.CompleteRequest();</code>
Cette méthode signale clairement à IIS de passer à la phase EndRequest
, mettant ainsi fin au traitement de la page d'origine.
Pour approfondir ce sujet, y compris les meilleures pratiques de gestion des redirections au sein des Application_Error
gestionnaires, consultez l'article de blog détaillé de Thomas Marquardt (lien à fournir si disponible).
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!