Éviter System.Threading.ThreadAbortException avec Response.Redirect
L'utilisation de Response.Redirect(...)
pour la redirection de page peut parfois déclencher un System.Threading.ThreadAbortException
. Cela se produit parce que le serveur Web arrête brusquement le traitement de la page après la redirection.
Le paramètre endResponse
dans Response.Redirect
contrôle la fin de l'exécution de la page actuelle. Définir endResponse
sur true
(valeur par défaut) ferme immédiatement la page, ce qui peut entraîner une perte de données et un traitement inefficace. Le définir sur false
empêche l'exception mais permet à la page de continuer à s'exécuter inutilement.
La meilleure solution est d'utiliser Response.Redirect(url, false)
suivi de Context.ApplicationInstance.CompleteRequest()
. Cela déplace immédiatement le pipeline IIS vers la phase EndRequest
, arrêtant proprement l'exécution de la page actuelle.
Pour une compréhension plus approfondie et des conseils supplémentaires, y compris la gestion des redirections au sein des Application_Error
gestionnaires, consultez l'article de blog perspicace de Thomas Marquardt sur ce sujet.
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!