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.

29
demandé sur Kiquenet 2011-02-02 16:08:34

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.)

91
répondu David 2011-02-02 13:22:34

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".

14
répondu Matías Fidemraizer 2011-02-02 13:17:09

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

4
répondu Chris Emerson 2014-07-28 11:36:39

Réponse.Redirect jette exception être la conception. Il est OK.

0
répondu gor 2011-02-02 13:17:42