IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Erreur : "Cannot redirect after HTTP headers have been sent."


Sujet :

ASP.NET MVC

  1. #1
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut Erreur : "Cannot redirect after HTTP headers have been sent."
    Bonjour,

    j'ai essayé d'afficher un message d'alerte en javascript à partir d'une action dans un contrôleur m'ai j'ai eu une erreur de serveur web comme suit:

    Cannot redirect after HTTP headers have been sent.
    c'est le code que j'ai ajouter à ma action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Response.Write(@"<script language='javascript'>alert('mot de passe n'est pas confirmé !!');</script>");
    Response.Flush();
    Et merci d'avance.

  2. #2
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    salut,

    quel est la suite de ton code ?

    si tu fais une quelconque action qui change ta page courante (genre, redirectToAction), c'est normal.

    En plus, ce n'est pas trés propre

    A la limite, si tu dois faire ca, ajoute ton message d'erreur dans les données de ta vue, et gères depuis la vue l'affichage ou non du message

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre averti Avatar de clubist
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 301
    Points
    301
    Par défaut
    donc voila tout le code de l'action inscrireuser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    [HttpPost]
            public ActionResult inscrireUser(FormCollection collection)
            {
                userProfile user = new userProfile();
                String pass2 = Request.Form.Get("pass2");//pour récupérer la valeur de 2ème champs password  
                try
                {
                   UpdateModel(user);
        //vérifierVide : méthode pour vérifier si le champ est vide           
                   if (this.verifierVide(user.firstname) || this.verifierVide(user.lastname) || this.verifierVide(user.username) || this.verifierVide(user.password) || this.verifierVide(pass2))
                   {
                       Response.Write(@"<script language='javascript'>alert('un ou plusieurs champs sont vides !!');</script>");
                       Response.Flush();
     
                   }
     
     //l'erreur provient de cette 2ème condition
    // vérifierPass : méthode vérifie si user.password et pass2 contiennent la meme valeur
                   if(!this.verifierPass(user.password,pass2)){
     
                       Response.Write(@"<script language='javascript'>alert('mot de passe n'est pas confirmé !!');</script>");
                       Response.Flush();
     
     
                   }                
                    db.AddTouserProfile(user);
                    db.SaveChanges();
    // si le nouveau user est bien enregistrè dans la base je passe à la view de tous les users
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
     
            }
    bon, j'ai testé la première if et c'est bien marché et le message est affiché si je laisse un ou plusieurs champs vide après l'envoie de formulaire,
    mais lorsque je traite le 2ème cas une erreur s'affiche malgré que je répète la même démarche et j'ai pas redirigé le client vers une autre page dans cette condition (2ème if)

    si vous pouvez m'aider ou vous avez une autre idée pour corriger ça

    et merci d'avance.

    et c'est la trace d'erreur provenant de serveur:
    [HttpException (0x80004005): Cannot redirect after HTTP headers have been sent.]
    System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent) +8892535
    System.Web.HttpResponseWrapper.Redirect(String url, Boolean endResponse) +17
    System.Web.Mvc.RedirectToRouteResult.ExecuteResult(ControllerContext context) +375
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +39
    System.Web.Mvc.<>c__DisplayClass14.<InvokeActionResultWithFilters>b__11() +60
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +391
    System.Web.Mvc.<>c__DisplayClass16.<InvokeActionResultWithFilters>b__13() +61
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +285
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +830
    System.Web.Mvc.Controller.ExecuteCore() +136
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +111
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +39
    System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +65
    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +44
    System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +42
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +141
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +54
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +52
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8836913
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

  4. #4
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par clubist Voir le message
    si vous pouvez m'aider ou vous avez une autre idée pour corriger ça
    Utiliser des validateurs coté client te permettrait d'éviter de poster la page pour rien...

    http://dotnet.developpez.com/mvc/mvc...ng-validation/

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Membre régulier Avatar de hamouda64
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 63
    Points : 74
    Points
    74
    Par défaut
    Voilà un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string popupScript = "<script language='javascript'>" + "alert('test')" + "</script>";
    Page.RegisterStartupScript("PopupScript", popupScript);
    Bonne courage

  6. #6
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par hamouda64 Voir le message
    Voilà un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string popupScript = "<script language='javascript'>" + "alert('test')" + "</script>";
    Page.RegisterStartupScript("PopupScript", popupScript);
    Bonne courage
    euh...oui, mais non !!!

    En MVC, tu as tout un ensemble de méthodes propres pour faire ca, coté client, et sans ré-inventer la roue.

    Si tu es en MVC 1, tu as des exemples ici :
    http://blogs.taiga.nl/martijn/2008/1...lidation-with/

    en MVC 2, c'est même intégré au framework :
    http://philippe.developpez.com/artic...-net-mvc-2/#L4

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

Discussions similaires

  1. PHP 4 : erreur : Warning: Cannot modify header
    Par Shixz dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2008, 15h42
  2. Réponses: 3
    Dernier message: 28/01/2008, 22h18
  3. [JpGraph] message d'erreur: HTTP headers have already been sent
    Par coco38 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 09/04/2007, 10h03
  4. [CKEditor] pb fckeditor chez ovh !!!upload ok! erreur browser cannot modify header information
    Par damien40 dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 29/03/2007, 20h37
  5. [JpGraph] Error: HTTP headers have already been sent.
    Par haffouff dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 09/05/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo