Formation PUB770 : ASP.NET WebForms, H-2015 La gestion de l'état

25.1 Variables de session


Tout comme en PHP, il est possible de créer des variables de session en ASP.NET. 

Par défaut, les sessions sont activées pour chaque page Web. Il n’y a donc rien de spécial à faire pour pouvoir utiliser les variables de session en ASP.NET.

▼Publicité Le texte se poursuit plus bas

Désactiver les sessions pour une page Web

Il est possible de désactiver les sessions sur une page particulière afin d’améliorer ses performances. Ceci se fait en ajoutant l’attribut EnableSessionState="False" dans la directive de page située en haut du fichier .aspx.

Les pages qui contiennent cet attribut ne pourront pas utiliser les variables de session.

Ex :

Fichier .aspx (ASP.NET)

<%@ Page ... EnableSessionState="False" %>

Durée d'une session

Il est possible de configurer la durée d'une session dans le fichier Web.config. La durée de la session correspond au délai pendant lequel une session peut demeurer inactive avant d'être abandonnée. Par défaut, la durée de la session est de 20 minutes. Pour la modifier, il faut entrer un attribut timeout dans le sessionState.

Ex :

Fichier Web.config (XML)

<system.web>

   ...

   <sessionState mode="InProc" timeout="10" />

   ...

</system.web>

La durée du timeout est en minutes. Dans l'exemple précédent, la session se terminera lorsque l'usager aura passé 10 minutes sans faire de requête au serveur ou lorsqu'il fermera son navigateur.

Utiliser les variables de session

L’extrait de code suivant permet d’ajouter une variable de session. La syntaxe est très similaire à celle utilisée en PHP.

Ex :

Fichier .aspx.cs (ASP.NET avec C#)

Session["produit_id"] = valeur ;

Avant d’essayer de lire une variable de session, il faut toujours s’assurer qu’elle ait été initialisée.

Ex :

Fichier .aspx.cs (ASP.NET avec C#)

if (Session["produit_id"] != null)

{

   ...

}

else

{

   ...

}

À chaque fois qu’on lit une variable de session, il faut prendre soin de la transtyper car ASP.NET stoque les variables de session dans un vecteur de type Object.

Ex :

Fichier .aspx.cs (ASP.NET avec C#)

textBoxProduit.Text = Session["produit_description"].ToString() ;

estActif = (bool)Session["actif"];

Utiliser les variables de session dans un fichier .cs autre que le fichier Code Behind

Si vous travaillez avec une bibliothèque de fonctions, vous devrez prendre une précaution supplémentaire pour pouvoir accéder aux variables de session. En effet, ce type de fichier ne peut pas accéder directement à la variable Session. 

Vous devrez donc initialiser une variable de type System.Web.SessionState.HttpSessionState et lui assigner la valeur System.Web.HttpContext.Current.Session.

Ex :

Fichier .cs autre que le fichier Code Behind (ASP.NET avec C#)

System.Web.SessionState.HttpSessionState session = System.Web.HttpContext.Current.Session;


if (session["usager_id"] != null)

{

    ...

}

Restrictions sur les sessions

Les sessions ne peuvent pas être utilisées n’importe où dans le code d’une page Web. Par exemple, si vous tentez d’initialiser ou de récupérer une variable de session dans le constructeur d’une page, donc lorsque la page n’est pas totalement construite, vous obtiendrez l’erreur « L'état de session ne peut être utilisé que lorsque enableSessionState a la valeur true. ».

Erreur de session


 

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Par Christiane Lagacé
Dernière révision le 18 août 2017
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre