2009-03-21 10 views
4

J'ai ma configuration de gestion des erreurs pour suivre toutes les exceptions et écrire les informations dont nous avons besoin à une base de données et envoyer un courriel aux développeurs qui ont besoin de connaître l'erreur afin de répare le. Le problème que je rencontre est lorsque l'erreur se produit avant le chargement complet de la page. Dans ce cas, les variables de session que je veux suivre ne sont pas disponibles dans Application_Error. Donc, je fais ce qui suit afin que je ne reçoive pas une erreur dans ma gestion des erreurs, mais il doit y avoir un meilleur moyen. En outre, si la page se charge et que l'erreur se produit lors de la soumission du formulaire, les variables de session sont disponibles.ASP.NET C# Application_Error dans Global.asax ne peut pas accéder aux variables de session

try 
{ 
    user_name = System.Web.HttpContext.Current.Session["User_Name"].ToString(); 
    user_number = System.Convert.ToInt32(System.Web.HttpContext.Current.Session["User_Number"].ToString()); 
} 
catch (Exception ex) 
{ 
    user_number = 0; 
    user_name = "N/A";  
} 

Toute aide est grandement appréciée. Merci!

Répondre

0

Voici ce que vous devez faire. L'utilisateur peut accéder à n'importe quelle page via un signet ou en connaissant l'URL. Par conséquent, la page pourrait éventuellement être récupérée par l'utilisateur avant que toutes les valeurs ne soient définies. C'est ce que vous devrez faire pour vous assurer que le code ne se casse pas.

4

Il n'y a rien de mal à ce que vous faites, même si une

if (null != System.Web.HttpContext.Current.Session) 

serait plus « chirurgicale » que votre bloc try-catch.

La session n'est pas initialisée avant l'événement AcquireRequestState. Par conséquent, aucune erreur ne se produira avant ce point.

+0

Salut Harpo, Merci pour votre réponse! Actuellement, notre journalisation des erreurs attrape les erreurs page par page et les renvoie à l'utilisateur (stupide je sais) mais si nous avons trace sur alors vous voyez les informations de session dans la trace. Il doit y avoir un moyen d'obtenir cette information sur l'événement application_error? –

+2

Encore une fois, une erreur peut être déclenchée à tout moment, y compris des points dans le cycle de vie de la page avant que la session ne soit disponible pour la page. Il n'y a pas de règle que la session ne peut pas être nulle. Il est donc raisonnable, voire prudent, d'effectuer cette vérification. – harpo

Questions connexes