2016-02-16 3 views
2

Je reçois un message d'erreur quand je suis en train d'obtenir la valeur de la session en Global.aspx:état de session ne sont pas disponibles dans ce contexte dans Global.asax

enter image description here

J'ai essayé une autre méthode pour obtenir la valeur de la session et le résultat est le même mais le message est différent:

enter image description here

Cette erreur se produit dans la méthode et Application_Error session est non nul, mais il montre qu'il est nul. J'ai mis ce code de session dans la condition (HttpContext.Current.Session! = Null) ainsi il fonctionne bien mais je veux la valeur de session qui ne reçoit pas avec cette méthode.

enter image description here

S'il vous plaît aidez-moi. Merci

Répondre

1

L'application_error intercepte toutes les exceptions dans l'application. Votre erreur peut provenir d'un point où il n'y a pas de session.

(Exemple rapide: à partir d'une opération asynchrone ou d'un thread créé sur mesure) Meilleur test: test de HttpContext.current! = Null et HttpContext.current.session! = Null avant d'essayer quoi que ce soit avec la session.

Et en utilisant la session est mal quand même 

Oh pour vous dernier point: Si vous mettez un point de rupture de toute façon autre que la « prise » par erreur d'application, votre Thred/async défectueux pourrait terminer l'opération avant l'arrêt studio visuel le processus. Donc, dans ce cas, vous pouvez avoir une session, alors qu'en fonctionnement normal (sans point d'arrêt), vous obtiendrez une exception

3

Le fichier Global.asax est généralement utilisé pour suivre les événements au niveau de l'application et ceux qui sont partageables entre les différents connectés utilisateurs, il n'est donc pas possible d'obtenir la valeur de session dans les événements global.asax.

Pour l'enregistrement d'erreur, vous pouvez utiliser le httpModule

lien ci-dessous pour l'enregistrement d'erreur en utilisant httpModule

http://www.codeproject.com/Articles/16171/An-HTTP-Module-for-ASP-NET-Error-Handling

lien ci-dessous est pour obtenir des valeurs de session dans httpModule

Can I access session state from an HTTPModule?

0

Essayez celui-ci ...

string value = HttpContext.Current.Session["user"] as string; 

if (String.IsNullOrEmpty(value)) 
{ 
    //your Code here 
}