Gestion de session ASP.NET [Exemple]
โก Rรฉsumรฉ intelligent
La gestion des sessions ASP.NET permet ร une application HTTP sans รฉtat de conserver les donnรฉes utilisateur entre les requรชtes. Ce document explique ViewState, l'objet Session permettant de stocker les paires clรฉ-valeur, prรฉsente un exemple concret, les modes d'รฉtat de session, la configuration du dรฉlai d'expiration et les avantages de l'รฉtat de session.
Gestion des sessions ASP.NET
Le protocole HTTP sur lequel fonctionnent toutes les applications Web est un protocole sans รฉtat. Par apatride, cela signifie simplement que les informations ne sont pas conservรฉes dโune demande ร lโautre.
Par exemple, si vous aviez une page de connexion comportant 2 zones de texte, une pour le nom et lโautre pour le mot de passe. Lorsque vous cliquez sur le bouton Connexion sur cette page, l'application doit s'assurer que le nom d'utilisateur et le mot de passe sont transmis ร la page suivante.
En ASP.NET, cela se fait de plusieurs maniรจres. La premiรจre consiste ร utiliser le concept de ViewState. ASP.NET y stocke automatiquement le contenu de tous les contrรดles et veille ร ce que ce contenu soit transmis ร la page suivante. Ceci est rรฉalisรฉ grรขce ร une propriรฉtรฉ appelรฉe ViewState.
Il n'est pas idรฉal pour un dรฉveloppeur de modifier quoi que ce soit dans l'รฉtat d'affichage. En effet, cela doit รชtre gรฉrรฉ uniquement par ASP.Net.
Objet Session ASP.NET
Lโautre mรฉthode consiste ร utiliser un objet appelรฉ ยซ objet de session ยป. L'objet Session est disponible tout au long du cycle de vie de l'application. Vous pouvez stocker n'importe quel nombre de paires clรฉ-valeur dans l'objet Session. Ainsi, sur n'importe quelle page, vous pouvez stocker une valeur dans l'objet Session via la ligne de code ci-dessous.
Session["Key"] = value
La valeur est stockรฉe dans un objet Session, et la clรฉ sert ร lui donner un nom. Cela permet de rรฉcupรฉrer la valeur ultรฉrieurement. Pour ce faire, il suffit d'exรฉcuter la commande ci-dessous.
Session["Key"]
Exemple d'objet Session ASP.NET
Dans cet exemple, nous allons utiliser l'objet Session pour stocker le nom saisi dans le champ de texte ยซ Nom ยป de la page. Nous rรฉcupรฉrerons ensuite cette valeur et l'afficherons correctement. Ajoutons le code ci-dessous au fichier Demo.aspx.cs.
protected void btnSubmit_Click(object sender, EventArgs e) { Session["Name"] = txtName.Text; Response.Write(Session["Name"]); lblName.Visible = false; txtName.Visible = false; lstLocation.Visible = false; chkC.Visible = false; chkASP.Visible = false; rdMale.Visible = false; rdFemale.Visible = false; btnSubmit.Visible = false; }
Code Explication:-
- La premiรจre ligne de code rรฉcupรจre la valeur du champ de texte ยซ Nom ยป et la stocke dans lโobjet Session. En spรฉcifiant le code Session["Name"], nous attribuons ร la propriรฉtรฉ le nom ยซ Name ยป. Ce nom facilite sa rรฉcupรฉration ultรฉrieure.
- La ligne de code suivante rรฉcupรจre la valeur stockรฉe de l'objet Session. Il รฉcrit ensuite cette valeur via la mรฉthode ยซ Response.Write ยป au client.
- Enfin, nous rendons invisibles tous les champs du formulaire. Sans cela, tous les champs et les valeurs de rรฉponse seraient affichรฉs simultanรฉment.
Une fois les modifications ci-dessus effectuรฉes, vous obtiendrez le rรฉsultat suivant.
Sortie :
ร partir du rรฉsultat, vous pouvez voir que la valeur Session de name a รฉtรฉ rรฉcupรฉrรฉe et affichรฉe dans le navigateur.
Modes d'รฉtat de session ASP.NET
ASP.NET peut stocker les donnรฉes de session ร plusieurs endroits, appelรฉs modes d'รฉtat de session. Le mode choisi influe sur les performances, la scalabilitรฉ et la conservation des donnรฉes aprรจs un redรฉmarrage de l'application. Le tableau ci-dessous les compare :
| Mode | Oรน l'รฉtat est stockรฉ | Meilleur pour |
|---|---|---|
| En cours | Dans la mรฉmoire du serveur web (par dรฉfaut) | Applications mono-serveur : les plus rapides, mais perdues au redรฉmarrage |
| Serveur d'รฉtat | Un processus de service d'รฉtat ASP.NET distinct | Fermes de serveurs Web ; rรฉsiste aux redรฉmarrages d'application |
| Serveur SQL | Une base de donnรฉes SQL Server | Les fermes Web nรฉcessitent un รฉtat durable et รฉvolutif |
| Encadrement Sur Mesure | Un fournisseur personnalisรฉ que vous implรฉmentez | Magasins spรฉcialisรฉs tels que Redis |
| de | รtat de la session dรฉsactivรฉ | Applications qui n'ont pas besoin de sessions |
InProc est la solution par dรฉfaut et la plus rapide, mais pour les dรฉploiements ร charge รฉquilibrรฉe, StateServer ou SQLServer conservent les sessions disponibles sur plusieurs serveurs.
Comment configurer le dรฉlai d'expiration de session dans ASP.NET
Une session n'est pas permanente ; elle expire aprรจs une pรฉriode d'inactivitรฉ. Vous pouvez configurer ce dรฉlai d'expiration dans le fichier web.config ร l'aide de l'รฉlรฉment sessionState, oรน la valeur du dรฉlai est exprimรฉe en minutes :
<configuration> <system.web> <sessionState mode="InProc" timeout="20" /> </system.web> </configuration>
Vous pouvez รฉgalement le dรฉfinir dans le code avec Session.Timeout = 30;Le dรฉlai d'expiration par dรฉfaut est de 20 minutes. Choisir un dรฉlai d'expiration plus court libรจre plus rapidement la mรฉmoire du serveur et amรฉliore la sรฉcuritรฉ, tandis qu'un dรฉlai d'expiration plus long permet aux utilisateurs de rester connectรฉs plus longtemps.
Avantages et inconvรฉnients de l'รฉtat de session
L'รฉtat de session est pratique, mais il prรฉsente des inconvรฉnients qu'il convient de prendre en compte avant de s'y fier fortement.
Avantages :
- Simple d'utilisation pour stocker des donnรฉes par utilisateur, comme celles d'une boutique.ping Dรฉtails du panier ou de connexion.
- Peut stocker des objets complexes, et pas seulement des chaรฎnes de caractรจres.
- Les donnรฉes sont conservรฉes sur le serveur, ce qui les rend plus sรฉcurisรฉes que le stockage cรดtรฉ client.
Inconvรฉnients :
- Le mode InProc consomme de la mรฉmoire serveur et ne s'adapte pas ร l'รฉchelle d'une ferme de serveurs web.
- Les donnรฉes de session sont perdues lorsque la session expire ou que l'application redรฉmarre (en mode InProc).
- Le stockage de grandes quantitรฉs de donnรฉes par utilisateur peut nuire aux performances en cas de forte charge.



