J'ai une solution qui comprend 2 projets et 2 fichiers de classe appelés par référence. Dans un de mes projets, j'ai du code dans Global.asax dans le bloc Session_Start qui charge quelques variables d'une base de données et les définit en variables de session. Si je mets un point d'arrêt dans Global.asax, je peux vérifier que les variables sont bien définies correctement.Variables de session ASP.NET C# étant perdues
Lorsque je référence les variables de session dans les classes de l'un de mes modules code-behind ou d'une classe dans mon projet, elles sont présentes. Mais si je les référence dans l'une des classes appelées par référence (une classe partagée, essentiellement), les variables de session sont toutes nulles. J'utilise HttpContext.Current.Session ["varName"] pour accéder aux variables d'une classe, comme d'habitude.
Y at-il autre chose que je dois considérer pour avoir accès à ces variables de session? Serait-ce peut-être un problème d'espace de noms?
Eh bien, d'une « séparation des préoccupations » point de vue, il semble que le projet « autre » ne doit pas être au courant directement de l'environnement web. Pouvez-vous simplement transmettre les valeurs de la session dans l'autre projet qui sont nécessaires? – RQDQ
Essayez: System.Web.HttpContext.Current.Session ["varName"]. En outre, n'oubliez pas à quelle étape du cycle de vie de la page ASP.NET vous essayez de lire la session, par exemple. Est-il possible que la session n'a pas encore été chargée au moment où vous essayez de le lire? –
Moe - Je personnalise le logo qui apparaît sur l'écran de connexion en fonction de l'URL utilisée pour accéder au système. Quand je passe à travers, je place un point de rupture dans le global.asax et il s'arrête d'abord et les variables sont définies. Ensuite, le prochain point de rupture est lorsque mon module de connexion tente de charger le logo à partir de la base de données. Il appelle une procédure de cette classe partagée 'other' pour gérer le chargement de l'image et le nom de la base de données est null. Je suppose que je pourrais essayer de prendre la variable de session du module où il fonctionne et la passer à la méthode int de la classe qui charge l'image ... Je vais essayer ça. –