Maison >développement back-end >C++ >Comment éviter ThreadAbortException pendant Response.Redirect dans ASP.NET ?

Comment éviter ThreadAbortException pendant Response.Redirect dans ASP.NET ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-20 21:29:13579parcourir

How to Avoid ThreadAbortException During Response.Redirect in ASP.NET?

Résolution de l'exception ThreadAbort dans les redirections ASP.NET

Le problème :

Lorsque vous utilisez Response.Redirect(...) pour la redirection de page dans ASP.NET, vous pourriez rencontrer la redoutable erreur « System.Threading.ThreadAbortException ».

Comprendre l'exception :

Cette exception se produit car Response.Redirect, par défaut, continue d'exécuter le code après la commande de redirection. Le serveur Web met alors fin prématurément à la demande, entraînant l'exception.

La solution : la redirection contrôlée

La meilleure façon d'éviter cela est d'utiliser la surcharge Response.Redirect qui permet de contrôler la fin de la réponse :

<code class="language-csharp">Response.Redirect(url, false);
Context.ApplicationInstance.CompleteRequest();</code>

En définissant le paramètre endResponse sur false, vous empêchez la résiliation immédiate de la demande. Context.ApplicationInstance.CompleteRequest() signale ensuite explicitement à IIS de passer directement à la phase EndRequest, optimisant ainsi les performances en évitant l'exécution de code inutile après la redirection.

Pourquoi c'est mieux :

Bien que la simple utilisation de Response.Redirect(url, true) puisse sembler une solution, cela peut entraîner des problèmes de performances, car le code restant sur la page s'exécute toujours (bien que brièvement) avant que la redirection ne prenne effet. La méthode ci-dessus offre une redirection plus propre et plus efficace.

Lectures complémentaires :

Pour une analyse plus approfondie de la gestion des cas extrêmes, tels que les redirections au sein des Application_Error gestionnaires, reportez-vous à des ressources telles que le blog de Thomas Marquardt (le lien serait inséré ici s'il est disponible).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn