Réponse.redirect soulève " Thread a été abandonné"
J'ai un VB.NET code appelé quand j'ai besoin de supprimer un objet de DB. Sur Page_load, je vérifie si ce n'est pas post back (pour empêcher une actualisation manuelle) et, après la suppression de l'objet, je redirige vers la page de l'appelant en utilisant Response.rediriger. À ce stade, mon code soulève un
Exception: L'EXCEPTION se produit dans File_supprimer.aspx.vb numéro de ligne: 34 Message D'erreur: le Thread était en cours interrompre.
Et, sur l'Observateur d'Événements, je peux voir que aspnet_wp.exe se bloque:
Aspnet_wp.exe (PID: 1532) arrêté inattendu.
Pour plus d'informations, voir AIDE et Centre de soutien à http://go.microsoft.com/fwlink/events.asp.
On ne sait pas pourquoi cela se produit seulement ici parce que j'utilise la réponse.rediriger également de visualiser le fichier, et pas seulement pour le supprimer.
4 réponses
Par défaut, Response.Redirect()
annule le thread courant. Naturellement, cela jette un ThreadAbortException
. Il peut être évité en passant un false
à Response.Redirect()
, qui n'abandonnera pas le thread actuel.
Soyez conscient de ce que cela signifie, cependant. Si le thread n'est pas abandonné, le code suivant Response.Redirect()
continuera à s'exécuter. Contrôlez votre flux logique en conséquence. (Cela se fait souvent avec des instructions return
et d'autres directives de contrôle de flux suite à une redirection.)
Réponse.Redirect lancera toujours une ThreadAbortException, selon la documentation MSDN si vous ne donnez pas une valeur booléenne" false "au paramètre D'entrée" endResponse " HttpRequest.Redirection (chaîne, bool):
Donnez simplement "false" au paramètre "endResponse".
La liste des options pour résoudre ce problème présentée ici a fonctionné pour moi (j'ai utilisé #2): https://gist.github.com/cemerson/9dea993044a4e7fdca0e