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 ligne d'erreur stacktrace


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut ASP.net ligne d'erreur stacktrace
    Bonjour,

    Je développe un site en asp.net dans un environnement de developpement. Je compile mon projet en mode debug et arrive à obtenir la ligne d'erreur survenu lors d'un try catch. (Ex.Stacktrace)
    Lorsque je met mon projet en environnement de prod je n ai plus le numéro de la ligne d'erreur (il y a quelques mois cela marchait bien ms plus maintenant), je n'ai que les appels de fonctions survenus avant l'erreur

    Quelqu'un pourrait-il m'aider ?
    Il doit manquer quelque chose dans mon web.config ou ma conf IIS ???

    Merci d'avance
    --
    osyks

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Salut,

    Ces informations précises sont situés dans les fichiers pdb. En debug, sur nos postes ils y sont toujours, ce qui nous permet d'avoir la ligne posant problème.
    En release, c'est aussi possible de les avoir, mais attention niveau secu c'est très limite !

  3. #3
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    En fait ce que je veux c'est que quand j'ecris Ex.StackTrace dans un fichier j'ai le numéro de la ligne ayant généré l'erreur

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Je reformule ma réponse :
    StackTrace ne contient le numéro de ligne que si les fichiers pdb sont présents.

  5. #5
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    le fichier pdb est présent ds mon repertoire bin pourtant....

  6. #6
    Expert confirmé
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Points : 4 066
    Points
    4 066
    Par défaut
    Bonjour,

    Un solution consiste à capturer les exceptions dans la méthode ApplicationError du Global.asax. Tu peux ensuite logguer ton message dans un fichier log ou en base ou encore l'envoyer par mail.

    Petit bout de code qui peut servir d'exemple :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
      void Application_Error(object sender, EventArgs e)
        {
            HttpContext context = ((HttpApplication)sender).Context;
            Exception ex = context.Server.GetLastError();
            if (ex == null || !(ex is HttpException) || (ex as HttpException).GetHttpCode() == 404)
                return;
     
            StringBuilder sb = new StringBuilder();
     
            try
            {
                sb.Append("Url : " + context.Request.Url);
                sb.Append(Environment.NewLine);
                sb.Append("Raw Url : " + context.Request.RawUrl);
                sb.Append(Environment.NewLine);
     
                while (ex != null)
                {
                    sb.Append("Message : " + ex.Message);
                    sb.Append(Environment.NewLine);
                    sb.Append("Source : " + ex.Source);
                    sb.Append(Environment.NewLine);
                    sb.Append("StackTrace : " + ex.StackTrace);
                    sb.Append(Environment.NewLine);
                    sb.Append("TargetSite : " + ex.TargetSite);
                    sb.Append(Environment.NewLine);
                    ex = ex.InnerException;
                }
            }
            catch (Exception ex2)
            {
                sb.Append("Error logging error : " + ex2.Message);
            }
     
           //ENVOI PAR MAIL, OU ENREGISTREMENT DANS UN LOG
     
            context.Items["LastErrorDetails"] = sb.ToString();
            context.Response.StatusCode = 500;
            Server.ClearError();
     
            // Server.Transfer is prohibited during a page callback.
            System.Web.UI.Page currentPage = context.CurrentHandler as System.Web.UI.Page;
            if (currentPage != null && currentPage.IsCallback)
                return;
     
            context.Server.Transfer("~/error.aspx");
        }
    En espérant t'avoir aidé.

  7. #7
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Non, c'est moi qui ne suit pas clair

    J'ai 3 environnements différents:
    1 machine de dev
    2 machine de prod

    Dans tout mon projet j'ai des try catch avec my_writeLog(Ex.Stacktrace)
    sur la machine de dev j'ai bien le numéro de la ligne (fonction où l'erreur s est produite)
    sur une machine de prod j'ai aussi le numéro de la ligne
    sur l'autre machine de prod je n ai plus le numéro de la ligne d'erreur

    J'ai noté qu'au début cela se passait bien ms il y a 1 mois: plus de at toto:line 1095
    C'est revenu entre temps puis reparti, et la impossible.

    Cela est peut etre du à une mise à jour du serveur et donc une option quelque part qui a disparu.

    voici ma manip: je developpe mon proj sur l'env de dev j'ai une erreur et j ai bien dans mon fichier de log la ligne. En copiant bin et default.aspx sur l'env de prod (où avant j'avais la ligne...de temps en temps) je catch tjrs l'erreur ms stacktrace ne me sort pas la ligne.

    Cela doit être du à IIS qui n'utilise pas le pdb ou des problème de droits d'accés au repertoire bin, .....

    je suis perdu :'(

    j'ai tout vérifié:

    compilation en mode DEBUG
    debug=true dans web.config et default.aspx
    .dll et .pdb sont ds le repertoire bin

    ....sniff

  8. #8
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut ...
    y a t il des droits d'accès particulier à affecter au dossier /bin ?

    Car ce que je ne comprend pas c'est que partout sur le net ca dit:

    compiler en mode debug: c'est mon cas
    vérifier que le pdb est dans le bin: c'est mon cas, toutes les dll et le pdb du projet.
    Ceci dit entre le dev et la prod le projet ne se trouve pas dans la meme arborescence...je doute que cela pose problème vu que ca a tjrs été le cas, ms peut être me contredirez vous ????

    ce qui me met la puce à l'oreille par rapport au fait que certains jour j'avais bien la ligne de l'erreur, c'est qu'entres temps j'ai peut être du modifier les droits d'accés aux répertoires de mon projet.
    L'autre puce c'est que des MAJ de windows server 2008 impacte quelques conf' de mon projet, l'authentification kerberos par exemple est désactivé, les droits d'accés aux repertoires du projet sont modifié...y a til quelque chose qui pourrait également impacter la gestion de stacktrace? (pdb non trouvé....?)

    chuis au bord du rouleau la....qu'est ce que je dois faire ?

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut Une idée
    Quelle méthode de déploient utilises tu ? il est possible que cette méthode squizze les pdb ...

    enfin c'est une idée....

  10. #10
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Tjrs la meme méthode depuis le début (cad aussi bien quand l'affichage de la ligne marchait que quand ca ne marche pas) copier/coller en redesktop

    la dernière fois que les lignes furent affichés ( je sais que la date ne sert à rien) c'était le 19 février.

    Depuis, les seul choses qui aurait pu être modifier (sans réellement m en souvenir) sont les droits (permissions) sur les repertoire, installation de KB, MAJ

    J'ai tjrs affiché ma stacktrace de la meme facon: dans un catch: writelog(Ex.Stacktrace) (c'est le cas partout dans mon code)

    merci en tout cas pour votre aide, et vivement que je clique sur résolu

  11. #11
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    peut être veux-tu voir mon web.config ? (ca sonne scabreux ca....)

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    malheureusement, ça ne va pas m'aider à mon avis...

Discussions similaires

  1. [ASP.net, VS2008] débutant : Erreur Objet attendu
    Par betsprite dans le forum jQuery
    Réponses: 6
    Dernier message: 21/07/2010, 11h35
  2. ASP.NET 2.0 erreur : "The timeout period.."
    Par killysui dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/03/2009, 16h44
  3. ASP.net 1.1 : Erreur OutOfMemory
    Par morgiou dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/12/2008, 13h53
  4. [asp.net]Apparition "d'erreurs" de syntaxe
    Par Gumpy dans le forum Visual Studio
    Réponses: 1
    Dernier message: 30/10/2007, 17h33
  5. asp.net 1.1 : Erreur de compilation CS0016
    Par fumesec dans le forum ASP.NET
    Réponses: 6
    Dernier message: 08/03/2007, 08h55

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