Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous aide à résoudre l’erreur ThreadAbortException qui se produit si vous utilisez Response.End, Response.Redirectou Server.Transfer.
Version du produit d’origine : ASP.NET sur .NET Framework 4.6.2 ou version ultérieure, ASP.NET sur .NET Framework 3.5 Service Pack 1
Numéro de base de connaissances d’origine : 312629
Symptômes
Si vous utilisez le Response.End, Response.Redirectou Server.Transfer la méthode, une ThreadAbortException exception se produit. Vous pouvez utiliser une try-catch instruction pour intercepter cette exception.
Cause
La Response.End méthode 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 suivante Response.End n’est pas exécutée.
Ce problème se produit dans les méthodes et Server.Transfer dans la Response.Redirect mesure où les deux méthodes appellent Response.End en interne.
Résolution
Pour contourner ce problème, utilisez l’une des méthodes suivantes :
Pour
Response.End, appelez laHttpContext.Current.ApplicationInstance.CompleteRequestméthode au lieu deResponse.Endcontourner l’exécution du code à l’événementApplication_EndRequest.Pour
Response.Redirect, utilisez une surcharge, Response.Redirect(String URL, bool endResponse) qui passe false pour le paramètre endResponse pour supprimer l’appel interne àResponse.End. Par exemple :Response.Redirect ("nextpage.aspx", false);Si vous utilisez cette solution de contournement, le code suivant
Response.Redirectest exécuté.Pour
Server.Transfer, utilisez la méthode à laServer.Executeplace.
Bien que ASP.NET gère cette exception, vous pouvez utiliser l’instruction try-catch pour intercepter cette exception. Par exemple :
try
{
Response.Redirect("nextpage.aspx");
}
catch (Exception ex)
{
Response.Write (ex.Message);
}
Ajoutez un point d’arrêt sur la Response.Write ligne et notez que ce point d’arrêt est atteint. Lorsque vous examinez l’exception, notez que l’exception ThreadAbortException se produit.