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 :

Exception e, page et ligne ayant générées l'erreur ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut Exception e, page et ligne ayant générées l'erreur ?
    bonjour,

    j'aimerai trapper l'ensemble des erreurs susceptibles de survenir dans mon application ASP.NET.

    j'aimerai stocker dans une base de données le fichier source de l'erreur et la ligne ayant générée l'erreur.

    j'ai donc opté pour la méthode Application_Error dans le global.asax avec un <customError /> dans le web.config:

    web.config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <system.web>
        <customErrors mode="On" defaultRedirect="serverUnavailable.aspx" />
    </system.web>
    global.asax:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void Application_Error(object sender, EventArgs e) 
    {
            Exception err = Server.GetLastError().GetBaseException();
     
            // ... ici code pour enregistrer l'erreur dans la base de données
    }
    je n'arrive pas avec mon objet err à récupérer le fichier source de l'erreur et la ligne dans ce fichier qui à générée l'erreur, tel que l'on peut le voir sur la page d'erreur retournée par le moteur ASP.NET:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fichier source : c:\DATA\Dev-Intranet\OLREditor\App_Code\DAO\OlrTemplateDAO.cs    Ligne : 2281
    j'ai bien rencontré les objets StackTrace et StackFrame mais impossible jusqu'à maintenant de récupérer ces deux informations.

    quelqu'un peut-il m'éclairer ?

    par avance je vous remercie.

    Pierrick

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Et juste avec ça:
    Exception err = Server.GetLastError();

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut
    En fait il faut parcourir le StackTrace ou toutes les informations sont présentes. Par contre il y a beaucoup de choses dans cette StackTrace alors il faut filtrer un peu les informations que l'on souhaite retenir.

    Pour ma part j'ai choisi de retenir les traces concernant les fichiers .cs ou .aspx:
    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
    Exception err = Server.GetLastError().GetBaseException();
    System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(err, true);
    
    int frames = st.FrameCount;
    for (int count = 0; count < frames; count++)
    {
         String stackline = String.Empty;
         System.Diagnostics.StackFrame sf = st.GetFrame(count);
         stackline = sf.GetFileName();
          if (stackline != null)
          {
                    if (stackline.IndexOf(".cs") != -1 || stackline.IndexOf(".aspx") != -1)
                    {
                        msgerr += String.Format("Filename: {0}\r\n", stackline);
                        stackline = sf.GetMethod().ToString();
                        if (stackline != null)
                            msgerr += String.Format("Method: {0}\r\n", stackline);
                        stackline = sf.GetFileLineNumber().ToString();
                        msgerr += String.Format("Line: {0}\r\n", stackline);
                        msgerr += "------------------------------------\r\n";
                    }
                }
            }
    }
    
    // ici enregistrement de mes informations d'erreur stockées dans msgerr

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

Discussions similaires

  1. Table avec lignes ayant une relation "père-fils"
    Par the java lover dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/04/2007, 11h20
  2. [VBA-E] : somme de deux lignes ayant des positions variables
    Par johnmakina dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/01/2007, 16h47
  3. [Système] Script renommer page en ligne
    Par korldworld dans le forum Langage
    Réponses: 13
    Dernier message: 28/09/2006, 18h48
  4. [9i] géré une exception en une seule ligne
    Par hoaxpunk dans le forum Oracle
    Réponses: 2
    Dernier message: 31/01/2006, 19h50
  5. Sélection de la ligne ayant le plusgros indice ?
    Par elitost dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/09/2004, 11h36

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