ASP .Vérifier NET pour la Session
J'aimerais vérifier l'existence de la Session dans une base de classe de la page avant que je l'utilise, mais j'ai trouvé que si elle n'existe pas, il va lever une exception, il suffit de cocher:
if (Session != null)
{
Session.Remove("foo");
}
Permettra de lever cette exception:
État de Session ne peut être utilisé que lorsque enableSessionState est définie sur true, dans un
fichier de configuration ou dans la directive de Page. Veuillez également vous assurer que
Système.Web.SessionStateModule ou une séance personnalisée de l'état du module est inclus dans le
\\ dans la section de configuration de l'application.
La case qui se passe dans l'événement de Chargement d'une page de base de la classe que toutes mes pages aspx dériver. L'application a la session a permis, et il a le module répertoriés dans le httpModules nœud. Ceci est une application qui utilise la session fréquemment, normalement sans problème.
J'obtiens cette erreur que sur certaines pages et la plupart du temps ce n'est pas fiable. Je sais que je devrais être en train de faire quelque chose de différent pour éviter l'erreur, mais je ne suis pas sûr de ce que?
Suis-je la convocation de la Séance trop tôt dans le cycle de vie peut-être?
Je ne suis pas vérifier correctement pour que la session est disponible?
OriginalL'auteur Pete Michaud | 2009-07-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire votre chèque safer - Page.Sessions null vérifier dans le Contexte.Session de la propriété. Donc, vous devriez être en mesure de récupérer Contexte.Session et vérifier si elle est null. Si elle est alors à l'état de session n'est pas disponible.
Mais il devrait être disponible dans le Page_Load(), de sorte que les points de d'autres problèmes 🙂
OriginalL'auteur blowdart
Vous pouvez utiliser une méthode de ce genre pour déterminer si la requête courante utilise session:
Si vous n'êtes pas sûr que vous êtes même en cours d'exécution dans un contexte web, vous aurez besoin de vérifier que HttpContext.Actuelle n'était pas nulle à l'avance.
IReadOnlySessionState
hériteIRequiresSessionState
, de sorte que vous n'avez qu'à vérifierHttpContext.Current.Handler is IRequiresSessionState
.Bonne observation - j'ai corrigé le code.
OriginalL'auteur Rob Kent
Vous ne rencontrez pas de l'exception en raison d'une certaine variable de Session nul, mais simplement en utilisant Session logique sur une page qui n'est pas configuré pour communiquer avec l'état de la session du serveur (ce qui est logique dans certains cas où c'est effectivement une autre machine). Si ce n'est pas un problème pour vous, veillez à ce que vous avez toujours enableSessionState définie sur true.
OriginalL'auteur David Hedlund
Essayez de vérifier pour
HttpContext.Current.Session
, ou mêmeHttpContext.Current
(je fais beaucoup de Tests Unitaires, lorsque les composants sont appelées à partir de la ASP.NET j'ai eu ces revendeurs à valeur ajoutée, mais quand je les appelle de NUNIT je ne les ai pas disponibles)OriginalL'auteur Andrea
Avez-vous vérifier les pages qui sont à jeter l'erreur pour les
enableSessionState
propriété de la directive de Page? Vous pouvez le faire en allant à l' .page aspx, et de vérifier sienableSessionState
propriété est définie sur true/false. Si pourfalse
, fairetrue
.Vérifiez également dans le web.fichier de configuration pour le tag
<pages />
, et le mettre à jour pour inclureRéférence: Ici
OriginalL'auteur Kirtan