8
votes

Asp .net check pour la session

J'aimerais vérifier l'existence de la session dans une classe de base avant que je l'utilise, mais j'ai constaté que si cela n'existait pas, cela lancera une exception juste en vérifiant:

if (Session != null)
{
    Session.Remove("foo");
}


0 commentaires

5 Réponses :


0
votes

Vous n'écrivez pas à l'exception en raison d'une variable de session de certaines sessions NULL, mais simplement à l'aide de la logique de session sur une page qui n'est pas configurée pour communiquer avec le serveur d'état de session (ce qui est logique dans certains cas où cela est en fait une machine différente). S'il ne s'agit pas d'un problème pour vous, envisagez de vous assurer que vous avez toujours une étal de la réalité.


0 commentaires

0
votes

Avez-vous vérifié les pages qui lancent l'erreur pour la propriété EnableSessionState de la page Directive de la page? Vous pouvez le faire en allant à la page .aspx et en vérifiant si EnableSessionState est défini sur True / False. Si c'est défini sur faux , faites-le true .

Vérifiez également le fichier web.config pour la balise , et mettez-le à la mettre à jour pour inclure - xxx

référence: ici


1 commentaires

EnableSessionState devrait être une propriété de la classe de page? Je ne vois que Activerviewstate comme une propriété.



3
votes

Vous pouvez faire votre chèque Safer - Page.Session enveloppe un chèque null autour de la propriété context.Session. Vous devriez donc être capable de récupérer le contexte.session et vérifiez s'il est null. Si c'est alors l'état de la session n'est pas disponible.

Mais il devrait être disponible dans la page_LOAD (), de sorte que cela pointe sur des problèmes ailleurs :)


0 commentaires

0
votes

Essayez de vérifier httpcontext.current.session ou même httpcontext.current (je fais que beaucoup en test de l'unité, lorsque les composants sont appelés à partir de l'ASP. NET J'ai eu ces Vars, mais quand je les appelle de nunit je ne les ai pas disponibles)


0 commentaires

10
votes

Vous pouvez utiliser une méthode comme celle-ci pour déterminer si la requête actuelle utilise la session: xxx

Si vous n'êtes pas sûr que vous soyez même en cours d'exécution dans un contexte Web, vous devez vérifier. ce httpcontext.current n'était pas nul préalable.


1 commentaires

IRREDONLYSESTETE Hérités IREQUIRESESSTETTE , vous devez donc seulement rechercher httpcontext.current.handler est requiresessstate .