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 Discussion :

[ASP.NET 2.0][C#] Erreur lors de la gestion d'erreur Application_Error


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut [ASP.NET 2.0][C#] Erreur lors de la gestion d'erreur Application_Error
    J'essaye de faire une gestion d'erreur sur mon site.

    Dans mon global.asax :
    je récupère l'erreur et la met dans une varibale de session.
    je récupère des variables de session pour créer ma page d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void Application_Error(object sender, EventArgs e) 
    {    Session["LastError"] = Server.GetLastError();
         Server.Tansfer(~/maPageDErreur.aspx)                }
    L'accès à ma page d'erreur se passe bien.
    Mais le système retourne vers la méthode Application_Error.
    Je ne comprends pas ce comportement.

    Erreur obtenue :
    L'état de session a créé un ID de session, mais il ne peut pas l'enregistrer, car la réponse a déjà été vidée par l'application.]

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Je pense que c'est lié au fait que les données de session sont stockées dans un cookie. Le cookie est envoyé dans le header, donc si ta page est déjà en partie envoyée au client, il est trop tard pour ajouter quelque chose dans l'en-tête...

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Je pense que c'est lié au fait que les données de session sont stockées dans un cookie. Le cookie est envoyé dans le header, donc si ta page est déjà en partie envoyée au client, il est trop tard pour ajouter quelque chose dans l'en-tête...
    Les variables de session ne sont pas stockées dans un cookie

  4. #4
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Au lieu de faire Server.Transfer, tu peux ajouter la directive suivante dans ton web.config : <customErrors mode="RemoteOnly" defaultRedirect="~/maPageDErreur.aspx"/>

    Comme ça, dès qu'une erreur est interceptée, ça t'affiche la page d'erreur, sauf en local, ce qui est très pratique pour le debug. Sinon, tu peux jouer avec le paramètre mode.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Les variables de session ne sont pas stockées dans un cookie
    Tu es sûr ? je crois me souvenir que c'est configurable... mais je peux me tromper

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Tu n'es pas le premier à rencontrer ce problème apparemment...

    En fait j'ai fait une petite confusion... ce ne sont pas les variables de session qui sont stockées dans le cookie, mais l'ID de la session. La session n'est pas réellement créée tant que tu ne stockes rien dedans, donc le cookie avec l'ID de session n'est pas envoyé. Donc, quand tu ajoutes quelque chose dans la session pour la première fois, ASP.NET essaie d'envoyer le cookie, mais comme les en-têtes sont déjà partis, il ne peut pas... d'où l'erreur

  7. #7
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut
    Effectivement, j'ai ajouté le bout de code ci-dessous dans mon page_loade la page d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (Session.IsNewSession)
                {
                    Session["ASP.NetAjaxIsReallyStupid"] = true;
                }
    Et ça fonctionne.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Pongten Voir le message
    Au lieu de faire Server.Transfer, tu peux ajouter la directive suivante dans ton web.config : <customErrors mode="RemoteOnly" defaultRedirect="~/maPageDErreur.aspx"/>

    Comme ça, dès qu'une erreur est interceptée, ça t'affiche la page d'erreur, sauf en local, ce qui est très pratique pour le debug. Sinon, tu peux jouer avec le paramètre mode.
    Bonjour,
    je sais que ce post est un peu vieux... mais pour moi, d'actualité.
    Dans mon web.config, je fais exactement cela
    Mais le soucis c que quand ça arrive en production, je n'arrive pas à afficher à l'utilisateur le détail de l'erreur. Y a t-il une autre solution en utilisant le web.config?? l'idée est de trouver une gestion d'erreur "globale", autre que le try catch sur toutes les pages...
    Merci par avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exemple de gestion d'erreurs lors d'un parsing SAX
    Par Ioan dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 08/03/2011, 18h48
  2. [AC-2000] gestion des erreurs lors de l'importation d'un CSV dans une table formaté
    Par zandeparis dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/11/2009, 23h45
  3. Gestion d'erreur lors de chargement d'une image dans une useforme
    Par mentat dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/08/2009, 14h23
  4. [Upload] gestion des erreurs lors d'un upload de fichiers
    Par sarah65536 dans le forum Langage
    Réponses: 6
    Dernier message: 22/04/2009, 09h08
  5. Réponses: 4
    Dernier message: 13/09/2006, 16h53

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