PRB : ThreadAbortException se produit si vous utilisez Response.End, Response.Redirect ou Server.Transfer

Symptômes

Si vous utilisez le Response.End, Response.Redirect, ou
Méthode Server.Transfer , une exception ThreadAbortException se produit. Vous pouvez utiliser une instruction try-catch pour intercepter cette exception.

Cause

La méthode Response.End met fin à l’exécution de la page et déplace l’exécution vers l’événement Application_EndRequest dans le pipeline d’événements de l’application. La ligne de code qui suit Response.End n'est pas exécutée.

Ce problème se produit dans les méthodes Response.Redirect et Server.Transfer parce que les deux méthodes appellent Response.End en interne.

Résolution

Pour contourner ce problème, appliquez l’une des méthodes suivantes :

  • Pour Response.End, appelez la méthode HttpContext.Current.ApplicationInstance.CompleteRequest au lieu de Response.End pour contourner l’exécution de code à l’événement Application_EndRequest .
  • Pour Response.Redirect, utilisez une surcharge, Response.Redirect (url de chaîne, endResponse de bool) qui passe la valeur false pour le paramètre endResponse supprimer l’appel interne à Response.End. Par exemple :
      Response.Redirect ("nextpage.aspx", false);
    Si vous utilisez cette solution de contournement, le code qui suit Response.Redirect est exécuté.
  • Pour la méthode Server.Transfer, utilisez la méthode Server.Execute .

État

Ce comportement est voulu par la conception.
Propriétés

ID d'article : 312629 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Microsoft ASP.NET 4.5, Microsoft ASP.NET 4.0, Microsoft ASP.NET 3.5, Microsoft ASP.NET 2.0, Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

Commentaires