ThreadAbortException se produit si vous utilisez Response.End, Response.Redirect ou Server.Transfer
Cet article vous aide à résoudre l’erreur ThreadAbortException qui se produit si vous utilisez Response.End
, Response.Redirect
ou Server.Transfer
.
Version du produit d’origine : ASP.NET sur .NET Framework 4.5.2, ASP.NET sur .NET Framework 3.5 Service Pack 1
Numéro de la base de connaissances d’origine : 312629
Symptômes
Si vous utilisez la Response.End
méthode , Response.Redirect
ou Server.Transfer
, une exception ThreadAbortException 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 sur 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 Response.Redirect
méthodes et Server.Transfer
, car 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.CompleteRequest
méthode au lieu deResponse.End
pour contourner 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 afin de 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
Server.Transfer
, utilisez plutôt laServer.Execute
méthode .
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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour