88 votes

Pourquoi est-ce que j'obtiens "Cannot redirect after HTTP headers have been sent" lorsque j'appelle Response.Redirect() ?

Quand j'appelle Response.Redirect(someUrl) J'obtiens l'exception HttpException suivante :

Impossible de rediriger après l'envoi des en-têtes HTTP.

Pourquoi est-ce que je reçois ça ? Et comment puis-je résoudre ce problème ?

2voto

Dipanki Jadav Points 34

Vous pouvez également utiliser le code ci-dessous

Response.Write("<script type='text/javascript'>"); Response.Write("window.location = '" + redirect url + "'</script>");Response.Flush();

1voto

DucDigital Points 1510

Il y a une réponse simple à cela : Vous avez sorti quelque chose d'autre, comme du texte, ou tout autre élément lié à la sortie de votre page avant d'envoyer votre en-tête. Cela affecte la raison pour laquelle vous obtenez cette erreur.

Vérifiez simplement votre code pour une sortie possible ou vous pouvez mettre l'en-tête en haut de votre méthode pour qu'il soit envoyé en premier.

1voto

Brad Points 1

Si vous essayez de rediriger après l'envoi des en-têtes (si, par exemple, vous effectuez une redirection d'erreur à partir d'une page partiellement générée), vous pouvez envoyer du Javascript client (location.replace ou location.href, etc.) pour rediriger vers l'URL de votre choix. Bien sûr, cela dépend du HTML qui a déjà été envoyé.

1voto

utilsit Points 141

J'ai résolu le problème en utilisant : Response.RedirectToRoute("CultureEnabled", RouteData.Values) ; au lieu de Response.Redirect.

1voto

1_bug Points 65

Assurez-vous que vous n'utilisez pas Response comme Response.Flush(); avant votre partie de redirection.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X