9
votes

J'obtiens une exception "Impossible de rediriger une fois que des en-têtes HTTP ont été envoyés" lors de la redirection d'une autre page

Je reçois une exception xxx

lorsque vous allez réponse.redirect ("home.aspx") .

Comment puis-je résoudre ce problème? J'ai essayé de donner réponse.flush () avant de rediriger.


7 commentaires

Dupliquer à la question et à la résolution trouvée ici: Stackoverflow.com/questions/159523/...


duplicaté possible de Pourquoi dois-je obtenir" ne peut pas rediriger après l'envoi d'en-têtes HTTP "lorsque j'appelle Response.redirect (URL)?


J'ai essayé la solution du fil ci-dessus. Je ne suis pas en mesure de résoudre le problème ... Le titre de ma bande de roulement peut être dupliquer, mais le problème provoquant peut-être un autre ....


J'ai une page qui hérite d'une page de base où vérifie si l'utilisateur a la permission d'accéder à la page. Si l'utilisateur a la permission, alors redirigerait la page demandée, sinon de rediriger l'utilisateur pour accéder à la page refusée. Ce chèque arrive sur la méthode onint du basepage.


Juste une pensée, cela pourrait être de faire avec la hiérarchie des appels - avez-vous essayé de changer de surcharge?


Si les réponses dans l'autre question ne vous aident pas (par exemple, le deuxième plus élevé voté on one mention en veillant à ce que réponse.buffer est défini comme avant tout ce qui se passe), alors vous allez devoir montrer nous plus de votre code si vous vous attendez à nous diagnostiquer.


Duplicaté possible de pourquoi dois-je" ne peut pas rediriger après l'envoi d'en-têtes HTTP "lorsque j'appelle Response.redirect ()?


3 Réponses :


11
votes

Le problème est le réponse.flush () code> avant la redirection. Avec http, vous obtenez une réponse forte> pour une demande forte>. Votre navigateur n'a demandé que la page une seule fois et je soupçonne que vous essayez de répondre deux fois:

Response.Flush(); //First Response
Response.Redirect("Home.aspx"); //Second Response


2 commentaires

En raison de cette erreur, j'ai ajouté une réponse.flush (), même si je supprimais, je reçois la même erreur.


Ensuite, vous avez probablement une autre réponse quelque part, faire ou poster un code



-3
votes

Je viens de courir sur ce problème de manière un peu différente. J'avais deux appels de réponse.redirects qui n'étaient pas emballés dans des branches isolées du code. Travaillé bien en chrome, mais c'est-à-dire pas l'avoir aimé. C'était une solution facile depuis que j'avais deux déclarations "si". Je viens de tourner le second en un "sinon si" comme ... XXX


0 commentaires

0
votes

Dans mon cas, la cause du problème est que la chargement des données dans la grille de défilement prend beaucoup de temps. Et avant que les données GridView ne soient pas chargées exactement, mais j'appuie sur le bouton Redirection.

Essayer résoudre problème peut être:

+ diminuer vos données obtenez

ou

+ avant de terminer l'achèvement empêche d'appuyer sur le bouton Redirect


0 commentaires