Академический Документы
Профессиональный Документы
Культура Документы
Vue d'ensemble 1
Leçon : Gestion d'état 2
Leçon : Variables d'application
et de session 13
Leçon : Sessions avec et sans cookies 24
Contrôle des acquis 34
Atelier 14 : Stockage de données
d'application et de session 36
Les informations contenues dans ce document, y compris les adresses URL et les références à des
sites Web Internet, pourront faire l'objet de modifications sans préavis. Sauf mention contraire, les
sociétés, les produits, les noms de domaine, les adresses de messagerie, les logos, les personnes,
les lieux et les événements utilisés dans les exemples sont fictifs et toute ressemblance avec des
sociétés, produits, noms de domaine, adresses de messagerie, logos, personnes, lieux et
événements existants ou ayant existé serait purement fortuite. L'utilisateur est tenu d'observer la
réglementation relative aux droits d'auteur applicable dans son pays. Sans limitation des droits
d'auteur, aucune partie de ce manuel ne peut être reproduite, stockée ou introduite dans un système
d'extraction, ou transmise à quelque fin ou par quelque moyen que ce soit (électronique,
mécanique, photocopie, enregistrement ou autre), sans la permission expresse et écrite de
Microsoft Corporation.
Les produits mentionnés dans ce document peuvent faire l'objet de brevets, de dépôts de brevets en
cours, de marques, de droits d'auteur ou d'autres droits de propriété intellectuelle et industrielle de
Microsoft. Sauf stipulation expresse contraire d'un contrat de licence écrit de Microsoft, la
fourniture de ce document n'a pas pour effet de vous concéder une licence sur ces brevets,
marques, droits d'auteur ou autres droits de propriété intellectuelle.
Microsoft, MS-DOS, Windows, Windows NT, Active Directory, ActiveX, BizTalk, Hotmail,
IntelliSense, Jscript, MSN, MSDN, PowerPoint, Visio, Visual Basic, Visual C++, Visual C#,
Visual J#, Visual Studio, Win32 et Windows Media sont soit des marques déposées de Microsoft
Corporation, soit des marques de Microsoft Corporation, aux États-Unis d'Amérique et/ou dans
d'autres pays.
Les autres noms de produit et de société mentionnés dans ce document sont des marques de leurs
propriétaires respectifs.
Module 14 : Gestion d'état 1
Vue d'ensemble
! Gestion d'état
! Variables d'application et de session
! Sessions avec et sans cookies
Introduction Microsoft® ASP.NET vous permet de gérer l'état dans une application Web.
L'état est la capacité d'une application Web à conserver des informations
utilisateur.
Dans ce module, vous apprendrez à gérer l'état dans une application Web
ASP.NET.
Objectifs À la fin de ce module, vous serez à même d'effectuer les tâches suivantes :
! décrire la gestion d'état et ses différentes options dans une application Web
ASP.NET ;
! utiliser des variables d'application et de session pour la gestion d'état dans
des applications Web ASP.NET ;
! utiliser des sessions avec et sans cookies pour la gestion d'état dans des
applications Web ASP.NET.
2 Module 14 : Gestion d'état
Envoyer
Envoyer Envoyer
Envoyer Serveur
Serveur Web
Web
Serveur
Serveur Web
Web
Greetings.aspx Greetings.aspx
Bonjour
Bonjour
Jean Lebrun
Je
Je ne
ne me
me souviens
souviens
pas
pas de
de vous
vous !!
Introduction Tout comme les technologies qui reposent sur le protocole HTTP (Hypertext
Transfer Protocol), les formulaires Web sont sans état, ce qui signifie qu'ils
n'indiquent pas automatiquement si des demandes successives proviennent
toutes d'un même client ou si une instance de navigateur isolée affiche
actuellement une page ou un site Web. En outre, les pages Web sont détruites et
recréées à chaque nouvelle demande transmise au serveur Web. Par conséquent,
la longévité des informations contenues dans une page est inférieure au cycle de
vie de celle-ci.
Gestion d'état ASP.NET offre des capacités de gestion d'état qui permettent d'enregistrer des
informations sur le serveur, même lorsque l'utilisateur change de page, ce qui
permet d'assurer la continuité des informations utilisateur (l'état) tout au long
d'une visite sur un site Web.
Si l'état est conservé entre plusieurs pages, les informations d'origine fournies
par les utilisateurs peuvent être réutilisées, ce qui signifie qu'ils ne doivent pas
entrer les mêmes informations à chaque renvoi d'une page vers le serveur.
Exemple Dans l'illustration ci-dessus, l'utilisateur Jean Lebrun entre son nom dans le
formulaire login.aspx. Une fois ces informations personnelles entrées, elle sont
envoyées vers le serveur, et la page suivante, le formulaire greetings.aspx,
s'affiche. Sans gestion d'état, les informations entrées par l'utilisateur dans la
première page seraient perdues.
Grâce à la gestion d'état dans votre application Web, vous pouvez conserver
l'état dans plusieurs pages Web. Ainsi, lorsque les informations personnelles de
l'utilisateur sont envoyées vers le serveur, la deuxième page (le formulaire
greetings.aspx) accueille l'utilisateur par son nom, Jean Lebrun, qui a été entré
dans le formulaire login.aspx (première page de l'application Web).
4 Module 14 : Gestion d'état
Introduction ASP.NET offre deux types de gestion d'état qui permettent de conserver l'état
lors des allers-retours vers le serveur. Le choix du type de gestion d'état dépend
principalement de la nature de votre application Web.
Gestion d'état Les deux types de gestion d'état sont les suivants :
côté client et côté
serveur ! Côté serveur
Les options de gestion d'état côté serveur utilisent les ressources du serveur
pour stocker les informations d'état. Ces options offrent une plus grande
sécurité que celles côté client.
! Côté client
Les options de gestion d'état côté client n'utilisent pas les ressources du
serveur pour stocker les informations d'état. Les options côté client offrent
une sécurité minimale, mais accroissent les performances du serveur, car
elles ne lui font pas appel pour conserver l'état.
Côté serveur La gestion d'état côté serveur contient en outre différentes options, notamment :
! État d'application
Les informations d'état d'application sont disponibles pour tous les
utilisateurs d'une application Web (telles que le stockage du nombre de
visiteurs d'une application Web).
! État de session
Dans un état de session, les informations sont uniquement disponibles pour
l'utilisateur d'une session d'application Web spécifique (telles que le
stockage du modèle de couleurs favori d'un utilisateur).
Module 14 : Gestion d'état 5
Côté client La gestion d'état côté serveur offre également différentes options pour
conserver l'état. Ces options sont les suivantes :
! Cookies
Un cookie est un fichier texte qui peut être utilisé pour stocker de petites
quantités d'informations nécessaires à la conservation d'état.
! Propriété ViewState
La propriété ViewState des formulaires Web est une structure intégrée qui
conserve automatiquement les valeurs de plusieurs demandes de la même
page. Elle est conservée sur la page en tant que champ masqué.
! Chaînes de requête
Une chaîne de requête correspond aux informations qui sont ajoutées à la fin
d'une adresse URL (Uniform Resource Locator). Vous trouverez ci-dessous
un exemple typique :
http://www.contoso.com/listwidgets.aspx?category=basic&price=100
Dans l'URL précédente, la chaîne de requête débute par le point
d'interrogation (?) et contient deux paires attribut-valeur, category et price.
Introduction ASP.NET offre plusieurs options de gestion d'état côté serveur. Les états de
l'application et de session en font partie. Cette rubrique traite en détail de ces
deux options.
État d'application ASP.NET permet la gestion d'état d'application grâce à une instance de la classe
HttpApplicationState pour chaque application Web active. L'état d'application
est un mécanisme de stockage global qui est accessible à partir de toutes les
pages de l'application Web, ce qui le rend très utile pour le stockage des
informations utilisateur qui doivent être conservées lors des allers-retours vers
le serveur et entre les pages.
L'état d'application est une structure de dictionnaire clé-valeur, créée à chaque
demande d'une URL spécifique. Cette structure vous permet de stocker les
informations spécifiques à l'application entre chaque demande de page. Une
fois les informations spécifiques à l'application ajoutées à l'état d'application, le
serveur en assure la gestion.
Variables d'application ASP.NET contient les variables d'application nécessaires à la conservation de
l'état d'application. Les données idéales à insérer dans les variables d'application
sont celles qui sont partagées par plusieurs sessions et qui changent peu.
État de session ASP.NET permet la gestion d'état de session grâce à une instance de la classe
HttpSessionState pour chaque session d'application Web active.
L'état de session est similaire à l'état d'application, excepté qu'il est limité à la
session de navigateur en cours. Lorsque plusieurs utilisateurs utilisent une
application Web, chacun d'entre eux possède un état de session différent. En
outre, lorsqu'un utilisateur quitte une application Web, puis y retourne de
nouveau, son état de session est différent de celui qu'il possédait auparavant.
Module 14 : Gestion d'état 7
Cookies
Introduction La plupart des applications Web utilisent des cookies pour la gestion d'état côté
client.
Cookies Un cookie est une petite quantité de données qui est stockée soit dans un fichier
texte dans le système de fichiers de l'ordinateur client, soit dans la mémoire de
la session du navigateur client. Lorsque le serveur envoie une page vers le
client, il envoie également un cookie qui contient des informations spécifiques à
la page.
Vous pouvez utiliser des cookies pour stocker des informations relatives à un
client, à une session ou à une application spécifique. Les cookies sont stockés
sur l'ordinateur client, et lorsque le navigateur demande une page, il envoie les
informations contenues dans le cookie. Le serveur est autorisé à lire le cookie et
à en extraire la valeur. Chaque cookie contient des informations sur le domaine
dont il est issu. Un même domaine peut émettre plusieurs cookies.
Types de cookies Il existe deux types de cookies :
! Temporaires
Les cookies temporaires, appelés également cookies de la session ou
cookies non persistants, sont stockés uniquement dans la mémoire du
navigateur. Lorsque le navigateur est arrêté, ils sont supprimés.
! Persistants
Les cookies persistants sont identiques aux cookies temporaires, mais ils
possèdent une période d'expiration définie. Lorsqu'un navigateur demande
une page qui crée un cookie persistant, il enregistre celui-ci sur le disque dur
de l'utilisateur. Les cookies persistants peuvent résider pendant plusieurs
mois, voire plusieurs années, sur l'ordinateur client. Microsoft Internet
Explorer stocke ces cookies dans un fichier appelé
nomutilisateur@nomdomaine.txt, qui est créé sur le disque dur du client.
Module 14 : Gestion d'état 9
Fichier global.asax
Introduction Le fichier global.asax est un fichier déclaratif utilisé pour gérer des événements
lors de l'exécution de votre application Web.
Les caractéristiques du fichier global.asax sont les suivantes :
! Chaque application Web ASP.NET prend en charge un seul fichier
global.asax.
! Le fichier global.asax est stocké dans la racine virtuelle de l'application
Web.
! Le fichier global.asax peut gérer des événements d'application et de session
(début et fin) pour initialiser les variables d'application et de session.
! Le fichier global.asax est facultatif. Si vous ne le définissez pas, la structure
de page ASP.NET suppose que vous n'avez défini aucun gestionnaire
d'événements d'application ou de session.
Module 14 : Gestion d'état 11
IIS
IIS
Runtime
Runtime HTTP
HTTP de
de ASP.NET
ASP.NET
Application_BeginRequest
Application_BeginRequest
Application_AuthenticateRequest
Application_AuthenticateRequest
Application_AuthorizeRequest
Application_AuthorizeRequest Application_EndRequest
Application_EndRequest
Application_ResolveRequestCache
Application_ResolveRequestCache Application_UpdateRequestCache
Application_UpdateRequestCache
Application_AquireRequestState
Application_AquireRequestState Application_ReleaseRequestState
Application_ReleaseRequestState
Application_PreRequestHandlerExecute
Application_PreRequestHandlerExecute Application_PostRequestHandlerExecute
Application_PostRequestHandlerExecute
Exécution
Exécution de
de la
la page
page
Introduction Le fichier global.asax est un fichier déclaratif utilisé pour gérer des événements
lors de l'exécution de votre application Web.
Catégories Le fichier global.asax prend en charge les trois catégories d'événements
d'événements suivantes :
! les événements qui sont déclenchés lors d'une demande de page ;
! les événements qui sont déclenchés lors de l'envoi de la page demandée ;
! les événements d'application conditionnels.
Événements déclenchés Le tableau ci-dessous répertorie les événements déclenchés lors d'une demande
lors d'une demande de de page.
page
Nom de l'événement Description
Événements déclenchés Le fichier Global.asax contient également des événements qui sont déclenchés
lors de l'envoi de la lorsque la page demandée est renvoyée vers le client. Ces événements sont
page demandée répertoriés dans le tableau suivant :
Nom de l'événement Description
Événements Les événements d'application conditionnels sont des événements qui peuvent
d'application être ou non levés lors du traitement d'une demande. Le tableau suivant
conditionnels répertorie quelques-uns des événements d'applications conditionnels les plus
courants :
Nom de l'événement Description
Introduction Vous pouvez utiliser des variables d'application et de session pour partager des
informations entre les pages d'une application ASP.NET. Dans cette leçon, vous
apprendrez à initialiser et à utiliser des variables d'application et de session.
Vous étudierez également la spécification de la durée des variables
d'application et de session, ainsi que l'impact de ces dernières sur l'évolutivité
du stockage. Enfin, vous apprendrez à enregistrer des variables d'application et
de session dans une base de données.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! initialiser des variables d'application et de session ;
! définir et lire des variables d'application et de session ;
! modifier la durée des variables d'application et de session ;
! décrire les méthodes en processus et hors processus utilisées pour stocker
l'état de session ;
! enregistrer des variables d'application et de session dans une base de
données.
14 Module 14 : Gestion d'état
Sub
Sub Application_Start(s
Application_Start(s As
As Object,e
Object,e As
As EventArgs)
EventArgs)
Application("Nombre_visiteurs")
Application("Nombre_visiteurs") == 00
End
End Sub
Sub
protected
protected void
void Application_Start(Object
Application_Start(Object sender,EventArgs
sender,EventArgs e)
e)
{{
Application["Nombre_visiteurs"] = 0;
Application["Nombre_visiteurs"] = 0;
}}
Introduction Les variables d'application et de session sont initialisées dans les procédures
d'événement Start des objets Application et Session du fichier global.asax.
Variables de session L'objet Session permet de stocker les informations nécessaires à une session
utilisateur spécifique. Les variables stockées dans l'objet Session ne sont pas
ignorées lorsque l'utilisateur se déplace dans les pages de l'application Web.
Elles persistent tout au long de la session utilisateur.
L'exemple de code ci-dessous illustre l'utilisation des variables de session pour
stocker le modèle de couleurs favori d'une session utilisateur donnée.
Visual Basic® .NET Sub Session_Start(ByVal Sender As Object, _
ByVal e As EventArgs)
Session("Couleur_arrière_plan") = "beige"
Session("Couleur_premier_plan") = "noir"
End Sub
Variables d'application L'objet Application permet de partager des informations d'état parmi tous les
utilisateurs d'une application Web. Un objet Application est créé lorsque le
premier utilisateur de l'application Web demande un fichier .aspx. Il est détruit
lorsque tous les utilisateurs ont quitté l'application Web, puis celle-ci est
déchargée.
Par exemple, vous pouvez stocker le nombre total de visiteurs d'un site Web
dans une variable au niveau de l'application :
Visual Basic .NET Sub Application_Start(ByVal Sender As Object, _
ByVal e As EventArgs)
Application("Nombre_visiteurs") = 0
End Sub
Session["Couleur_arrière_plan"]
Session["Couleur_arrière_plan"] == "bleu";
"bleu";
Application.Lock();
Application.Lock();
Application["Nombre_visiteurs"]
Application["Nombre_visiteurs"] ==
(int)Application["Nombre_visiteurs"]
(int)Application["Nombre_visiteurs"] ++ 1;
1;
Application.UnLock();
Application.UnLock();
! Lecture des variables d'application et de session
strBgColor
strBgColor == Session("Couleur_arrière_plan")
Session("Couleur_arrière_plan")
lblNbVisitor.Text
lblNbVisitor.Text == Application("Nombre_visiteurs")
Application("Nombre_visiteurs")
strBgColor
strBgColor == (string)Session["Couleur_arrière_plan"];
(string)Session["Couleur_arrière_plan"];
lblNbVisitor.Text
lblNbVisitor.Text == Application["Nombre_visiteurs"].ToString();
Application["Nombre_visiteurs"].ToString();
Introduction Pour utiliser des variables d'application et de session dans ASP.NET, vous
devez simplement avoir recours à une clé de chaîne et définir une valeur.
Définition des variables Pour définir la variable de session, vous devez fournir une clé qui identifie
d'application et de l'élément que vous stockez, à l'aide d'une instruction :
session
Session("Couleur_arrière_plan") = "bleu"
C# Application.Lock();
Application["Nombre_visiteurs"] =
(int)Application["Nombre_visiteurs"] + 1;
Application.UnLock();
Module 14 : Gestion d'état 17
Lecture des variables Pour utiliser une variable de session ou d'application dans une page
d'application et de ASP.NET, vous devez simplement lire la valeur de l'objet Session ou
session Application :
Visual Basic.NET strBgColor = Session("Couleur_arrière_plan")
lblNbVisitor.Text = Application("Nombre_visiteurs")
C# strBgColor = (string)Session["Couleur_arrière_plan"];
lblNbVistitor.Text =
Application["Nombre_visiteurs"].ToString();
18 Module 14 : Gestion d'état
C# Session["intNombre"] = 3;
Introduction Le protocole HTTP est un protocole sans état. Un serveur Web ne dispose
d'aucun moyen pour déterminer le moment précis où un utilisateur quitte un site
Web. À défaut, il détecte qu'un certain laps de temps s'est écoulé depuis la
dernière demande d'une page. Il suppose alors que l'utilisateur a quitté le site
Web, et supprime tous les éléments de l'état de session associés à celui-ci.
Durée de session par Par défaut, une session se termine lorsqu'un utilisateur n'a pas demandé de page
défaut au cours des 20 dernières minutes. Si un même utilisateur demande une page
après ce délai, il est considéré en tant que nouvel utilisateur.
Modification de la durée Vous pouvez modifier la durée de session dans le fichier Web.config. Les
de session fichiers Web.config sont des fichiers XML (Extensible Markup Language)
standard et lisibles, que vous pouvez ouvrir et modifier dans n'importe quel
éditeur de texte. Dans le fichier Web.config suivant, la durée de session est
définie à 10 minutes :
<configuration>
<system.web>
<sessionState timeout="10" />
</system.web>
</configuration>
Variables d'application
et de session
- ou -
SQL
Client
Variables d'application et de session
********************Document a l'usage exclusif de l'instructeur********************
Introduction Par défaut, l'état de session est géré en processus. Cela signifie que toutes les
informations ajoutées à l'état de session sont stockées sur le serveur Web qui
exécute l'application ASP.NET. Ce type de stockage en processus présente
plusieurs inconvénients importants.
Inconvénient du L'un des principaux inconvénients liés au stockage de l'état de session en
stockage en processus processus est qu'il limite l'évolutivité de votre site Web. Vous ne pouvez pas
configurer plusieurs serveurs pour gérer des demandes.
Hors processus ASP.NET propose deux méthodes qui permettent de stocker l'état de session
hors processus. Vous pouvez réaliser les opérations suivantes :
! gérer l'état de session à l'aide d'une base de données SQL Server ;
! gérer l'état de session à l'aide d'un serveur d'état distinct.
Vous pouvez utiliser n'importe quel serveur Microsoft Windows® en tant
que serveur d'état.
Pour stocker l'état de session hors processus, vous devez modifier le fichier
Web.config en attribuant la valeur sqlserver ou stateserver au mode
sessionstate, puis en spécifiant l'emplacement du serveur. Les options
sqlserver et stateserver sont presque identiques : la première conserve
toutefois les informations dans SQL Server au lieu de les stocker dans la
mémoire de l'ordinateur.
Module 14 : Gestion d'état 21
<sessionState
<sessionState mode="SQLServer"
mode="SQLServer"
sqlConnectionString="data
sqlConnectionString="data source=Nom_SQL_Server;
source=Nom_SQL_Server;
Integrated
Integrated security=true"
security=true" />
/>
c:\>
c:\> OSQL
OSQL –S
–S Nom_SQL_Server
Nom_SQL_Server –E
–E <InstallSqlState.sql
<InstallSqlState.sql
" OSQL crée plusieurs procédures stockées et bases de
données temporaires pour le stockage des variables
Introduction Pour enregistrer des variables d'application et de session dans une base de
données SQL Server ou sur un serveur d'état, vous devez effectuer les deux
tâches suivantes :
1. configurer l'état de session dans le fichier Web.config de votre serveur
Web ;
2. configurer le serveur SQL Server ou le serveur d'état.
Configuration de l'état Dans le fichier Web.config, vous devez modifier les paramètres de
de session dans le configuration en attribuant les valeurs sqlserver ou stateserver au mode
fichier Web.config de sessionstate. Ensuite, vous devez configurer l'attribut sqlconnectionstring de
votre serveur Web telle sorte qu'il identifie le nom de l'ordinateur exécutant SQL Server ou du
serveur d'état.
Le code suivant illustre la définition de l'état de session dans le cas de
l'utilisation du mode sqlserver avec sécurité intégrée :
<sessionState mode="SQLServer"
sqlConnectionString="data source=Nom_SQL_Server;
Integrated security=true" />
Configuration du Pour configurer le serveur SQL Server, vous devez utiliser l'outil de ligne de
serveur SQL Server commande OSQL.exe de SQL Server.
OSQL.exe installe la base de données appelée ASPState, dans laquelle les
variables d'application et de session seront stockées.
Module 14 : Gestion d'état 23
Si vous utilisez un serveur d'état au lieu d'un serveur SQL Server, vous devez
démarrer le service Windows ASP.NET au lieu d'installer une base de données.
24 Module 14 : Gestion d'état
Introduction Les cookies permettent à une application Web qui s'exécute sur un serveur Web
de forcer un client à retourner des informations au serveur Web à chaque
demande HTTP. Ces informations permettent de conserver l'état avec le client
dans plusieurs demandes. Les cookies sont envoyés vers le client dans l'en-tête
HTTP d'une demande du client ou dans une réponse du serveur.
Dans cette leçon, vous apprendrez à utiliser des cookies pour stocker des
données de session, puis à récupérer les données d'un cookie. Vous étudierez
également les sessions sans cookie et leur configuration.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! utiliser des cookies pour stocker des données de session ;
! récupérer les informations d'un cookie ;
! décrire les sessions sans cookie ;
! configurer une session sans cookie.
Module 14 : Gestion d'état 25
Introduction Vous pouvez créer des cookies à l'aide de la propriété Cookies de l'objet
Response et de la classe Request. La propriété Cookies est une instance de la
classe HttpCookieCollection et représente une collection de cookies.
Création d'un cookie Le code suivant permet de créer un cookie intitulé monCookie :
Visual Basic .NET Dim objCookie As New HttpCookie("monCookie")
Dim now As DateTime = DateTime.Now
C# objCookie.Values.Add("Durée", now.ToString());
objCookie.Values.Add("Couleur_premier_plan", "blanc");
objCookie.Values.Add("Couleur_arrière_plan", "bleu");
Création d'un cookie Le code suivant permet de définir le délai d'expiration d'un cookie à une
persistant heure :
Visual Basic .NET objCookie.Expires = now.AddHours(1)
C# objCookie.Expires = now.AddHours(1);
26 Module 14 : Gestion d'état
Si vous n'ajoutez pas le code précédent, le cookie que vous créez est
temporaire. Un cookie temporaire est ajouté à la mémoire du navigateur, mais
n'est pas enregistré dans un fichier. Lorsqu'un utilisateur ferme son navigateur,
il est supprimé de la mémoire.
L'ajout du code de délai d'expiration transforme le cookie temporaire en cookie
persistant. Le cookie persistant est enregistré sur le disque dur. Si un utilisateur
ferme son navigateur, puis l'ouvre de nouveau, il peut accéder à la même page
Web jusqu'à l'expiration du cookie persistant. L'expiration du cookie persistant
dépend du délai d'expiration défini dans le code. Dans l'exemple précédent, le
cookie persistant sera supprimé au bout d'une heure.
Remarque Les cookies persistants sont souvent utilisés pour stocker des
informations relatives au nom et à l'ID d'un utilisateur pour que celui-ci soit
identifié par le serveur lors de sa prochaine visite du site Web.
C# Response.Cookies.Add(objCookie);
Fonctionnement Supposons que vous souhaitez créer un cookie (Nomutilisateur) qui contient le
d'un cookie nom d'un des visiteurs de votre site Web. Pour le créer, le serveur Web envoie
un en-tête HTTP, comme illustré dans le code suivant :
Set-Cookie: Nomutilisateur=Jean+Lebrun; path=/;
domain=microsoft.com;
Expires=mardi 01-févr.-05 00.00.01 GMT
Les cookies stockés dans un fichier texte sont persistants. Par défaut, le fichier
texte se trouve dans le dossier \Documents and Settings\
nom_utilisateur\Cookies.
Si vous utilisez Internet Explorer, les cookies persistants sont stockés dans un
fichier texte au format suivant :
Nomutilisateur@nomdomaine.txt
Module 14 : Gestion d'état 27
Introduction Dans cette application pratique, vous découvrirez comment utiliser des
variables d'application et de session, ainsi que des cookies persistants pour
stocker des informations utilisateur.
Test des fonctionnalités ! Connexion à l'application Web
1. Ouvrez Internet Explorer et naviguez jusqu'à la page suivante :
http://ordinateur_instructeur/Mod14VB/default.aspx ou
http://ordinateur_instructeur/Mod14CS/default.aspx.
2. Tapez votre nom dans la zone de texte, sélectionnez une couleur dans la
zone de liste déroulante, puis cliquez sur Envoyer.
Vous êtes redirigé vers la page results.aspx, qui affiche votre nom, la
couleur choisie et la date et l'heure de votre dernier accès à la page
default.aspx. La page results.aspx affiche également le nombre de visiteurs.
3. Actualisez le navigateur plusieurs fois.
Chaque actualisation entraîne une augmentation du nombre de visiteurs,
mais votre nom et votre couleur restent affichés.
4. Fermez Internet Explorer.
5. Rouvrez Internet Explorer, puis naviguez jusqu'à la page suivante :
http://ordinateur_instructeur/Mod14VB/results.aspx ou
http://ordinateur_instructeur/Mod14CS/results.aspx.
Votre nom apparaît, mais pas la couleur que vous aviez choisie. La date et
l'heure de votre dernier accès à la page default.aspx sont également affichés.
28 Module 14 : Gestion d'état
____________________________________________________________
____________________________________________________________
! Affichage du code
1. Dans la barre d'adresses de l'Explorateur Windows, tapez les adresses
suivantes :
\\ordinateur_instructeur\c$\inetpub\wwwroot\mod14VB ou
\\ordinateur_instructeur\c$\inetpub\wwwroot\mod14CS
et appuyez sur ENTRÉE.
2. Ouvrez la page code-behind de la page Default.aspx.
Dans la procédure d'événement btnSubmit_Click, quelles sont les deux
actions qui se produisent ?
____________________________________________________________
____________________________________________________________
Module 14 : Gestion d'état 29
____________________________________________________________
____________________________________________________________
! Affichage du cookie
1. Dans l'Explorateur Windows, naviguez jusqu'au dossier suivant :
2. C:\Documents and Settings\Student\Cookies
>
____________________________________________________________
! Lecture du cookie
Dim
Dim objCookie
objCookie As
As HttpCookie
HttpCookie == Request.Cookies("monCookie")
Request.Cookies("monCookie")
HttpCookie
HttpCookie objCookie
objCookie == Request.Cookies["monCookie"];
Request.Cookies["monCookie"];
lblTime.Text
lblTime.Text == objCookie.Values["Durée"];
objCookie.Values["Durée"];
lblTime.ForeColor
lblTime.ForeColor == System.Drawing.Color.FromName
System.Drawing.Color.FromName
(objCookie.Values["Couleur_premier_plan"]);
(objCookie.Values["Couleur_premier_plan"]);
lblTime.BackColor
lblTime.BackColor == System.Drawing.Color.FromName
System.Drawing.Color.FromName
(objCookie.Values["Couleur_arrière_plan"]);
(objCookie.Values["Couleur_arrière_plan"]);
Récupération des Le code suivant illustre les valeurs qui doivent être récupérées dans un
valeurs du cookie cookie :
Visual Basic .NET lblTime.Text = objCookie.Values("Durée")
lblTime.ForeColor = System.Drawing.Color.FromName _
(objCookie.Values("Couleur_premier_plan"))
lblTime.BackColor = System.Drawing.Color.FromName _
(objCookie.Values("Couleur_arrière_plan"))
C# lblTime.Text = objCookie.Values["Durée"];
lblTime.ForeColor = System.Drawing.Color.FromName
(objCookie.Values["Couleur_premier_plan"]);
lblTime.BackColor = System.Drawing.Color.FromName
(objCookie.Values["Couleur_arrière_plan"]);
Module 14 : Gestion d'état 31
Introduction Chaque session active est identifiée et suivie à l'aide d'une SessionID. La
SessionID est communiquée dans des demandes client-serveur à l'aide d'un
cookie HTTP ou dans une URL. Par défaut, la SessionID est stockée dans des
cookies.
Les utilisateurs peuvent toutefois désactiver à l'aide d'une option les cookies
dans leur navigateur. Si un cookie ne peut pas être ajouté dans le navigateur
d'un utilisateur, chaque demande effectuée par ce dernier démarre une nouvelle
session utilisateur. Toutes données de session associées à cet utilisateur sont
alors perdues à chaque nouvelle demande de page.
Sessions sans cookie La structure de page ASP.NET contient une option qui permet d'activer des
sessions sans cookie. Les sessions sans cookie vous permettent de tirer parti des
états de session, même si la prise en charge des cookies est désactivée dans le
navigateur.
Lorsqu'un utilisateur effectue une première demande avec les sessions sans
cookie activées, l'URL utilisée pour la demande contient automatiquement la
SessionID de l'utilisateur. Par exemple, lorsque l'utilisateur demande la page
http://server/page.aspx, la demande est automatiquement remplacée par l'URL
suivante :
http://server/(h44a1e55c0breu552yrecobl)/page.aspx
Limites liées à L'utilisation des sessions sans cookie présente les limites suivantes :
l'utilisation des sessions
sans cookie ! Si vous choisissez d'utiliser des sessions sans cookie, vous ne pouvez pas
utiliser des URL absolues pour lier les pages entre elles. Vous devez
concevoir votre site Web de telle sorte que chaque lien utilise une URL
relative à la page en cours.
! La plupart des navigateurs limitent la taille d'une URL à 255 caractères.
Module 14 : Gestion d'état 33
<sessionState
<sessionState cookieless="true"
cookieless="true" />
/>
Introduction Pour activer les sessions sans cookie, vous devez simplement modifier un
attribut unique dans le fichier Web.config.
Configuration d'une La seule opération nécessaire à l'activation des sessions sans cookie est
session sans cookie l'attribution de la valeur true à l'attribut cookieless dans la section
<sessionstate> du fichier Web.config, comme l'illustre le code suivant :
<sessionState cookieless="true"/>
34 Module 14 : Gestion d'état
! Gestion d'état
! Variables d'application et de session
! Sessions avec et sans cookies
1. Comment activez-vous les sessions sans cookie dans une application Web ?
2. Quelles sont les trois catégories d'événements qui sont gérées par le fichier
global.asax ?
5. Quelles sont les deux étapes que vous devez effectuer dans ASP.NET pour
utiliser des variables de session dans une batterie de serveurs Web ?
Plans
Plans de
de Assurance
Assurance Soins
Soins
Assurance
Assurance vie
vie
Life.aspx
Life.aspx
retraite
retraite maladie
maladie dentaires
dentaires
Retirement.aspx
Retirement.aspx Medical.aspx
Medical.aspx Dental.aspx
Dental.aspx
Application Contrôle
Contrôle Service
Service
Prospectus
Prospectus Médecins
Médecins
Web de Prospectus.aspx
Prospectus.aspx Doctors.aspx
Doctors.aspx
utilisateur
utilisateur Web
Web XML
XML
l'atelier namedate.ascx
namedate.ascx dentalService1.asmx
dentalService1.asmx
Fichiers
XML Doctors Dentists
Objectifs À la fin de cet atelier, vous serez à même d'effectuer les tâches suivantes :
! créer des variables d'application et de session, puis les utiliser pour stocker
et récupérer des informations ;
! créer, lire et écrire des informations à partir de cookies persistants ;
! stocker des variables de session dans une base de données Microsoft® SQL
Server™.
Remarque Cet atelier étant axé sur les concepts de ce module, il ne respecte
pas les recommandations Microsoft relatives à la sécurité.
Conditions préalables Pour aborder cet atelier, vous devez disposer de connaissances élémentaires
dans les domaines suivants :
! Création de variables d'application et de session
! Création de cookies
Scénario Coho Winery offre de nombreux avantages à ses employés. Dans les ateliers du
cours 2333A, Développement d'applications Web Microsoft ASP.NET à l'aide
de Visual Studio .NET, vous créerez un site Web qui permettra aux employés de
sélectionner et de définir les avantages qu'ils auront choisis.
Dans cet atelier, vous utiliserez des variables d'application et de session pour
améliorer la navigation dans le site Web Benefits.
Durée approximative de
cet atelier :
90 minutes
Module 14 : Gestion d'état 37
Exercice 0
Mise en place de l'atelier
Pour réaliser cet atelier, vous devez avoir créé un projet d'application Web
intitulé Benefits et un projet de bibliothèque de classes intitulé BenefitsList. Ces
projets peuvent être créés à l'aide de Microsoft Visual Basic® .NET ou de
Microsoft Visual C#™ .NET.
Si vous ne les avez pas encore créés, procédez comme suit :
Pour le projet Créez un projet de service Web XML Visual C# .NET, appelez-le
Visual C# .NET ServiceDentaireCS, puis ajoutez-le à la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, cliquez sur Projets
Visual C# dans la liste de Types de projets.
c. Dans la liste Modèles, cliquez sur Service Web ASP.NET, puis
définissez l'Emplacement à http://localhost/ServiceDentaireCS.
d. Cliquez sur Ajouter à la solution, puis sur OK.
Exercice 1
Utilisation de variables de session
Dans cet exercice, vous stockerez le nom et la date de naissance de l'utilisateur
dans des variables de session. Le contrôle utilisateur namedate.ascx et la page
life.aspx utiliseront les informations de ces variables de session, si elles
existent, pour remplir les zones de texte appropriées. Si les variables de session
n'existent pas encore, elles seront créées par l'une des deux pages.
Scénario Dans l'application Web actuelle, l'utilisateur doit entrer les mêmes informations
dans plusieurs pages. Par exemple, il doit indiquer son nom et sa date de
naissance dans les pages soins médicaux et assurance vie. Pour simplifier
l'utilisation de cette application Web, vous utiliserez un cookie pour stocker ces
informations dans des variables de session afin que l'utilisateur n'ait pas à les
entrer plusieurs fois.
Visual C# if (!Page.IsPostBack)
{
string strName = (string)Session["Nom"];
string strBirth = (string)Session["Date de naissance"];
txtName.Text = strName;
txtBirth.Text = strBirth;
}
Module 14 : Gestion d'état 43
Visual C# if (!Page.IsPostBack)
{
string strName = (string)Session["Nom"];
string strBirth = (string)Session["Date de naissance"];
txtName.Text = strName;
txtBirth.Text = strBirth;
}
44 Module 14 : Gestion d'état
Visual C# get
{
Session["Nom"] = txtName.Text;
return txtName.Text;
}
Visual C# get
{
Session["Date de naissance"] = txtBirth.Text;
return Convert.ToDateTime(txtBirth.Text);
}
! Test du code
1. Générez et parcourez la page life.aspx.
2. Dans le navigateur, tapez votre nom dans la zone de texte Nom, votre date
de naissance dans la zone de texte Date de naissance, puis 400 dans la zone
de texte Couverture.
3. Cliquez sur Enregistrer.
4. Cliquez sur le lien Médical situé en haut du formulaire Web life.aspx.
Votre nom et votre date de naissance apparaissent dans le formulaire Web
medical.aspx. Ces valeurs ont été obtenues à partir des variables de session.
5. Modifiez votre nom dans la zone de texte Nom, puis cliquez sur
Enregistrer.
6. Cliquez sur le lien Assurance vie et vérifiez que votre nom a été modifié
dans le formulaire Web life.aspx.
Module 14 : Gestion d'état 45
Exercice 2
Utilisation des cookies
Dans cet exercice, vous utiliserez des cookies pour stocker tous les avantages
sélectionnés par l'utilisateur. Lorsque l'utilisateur retournera dans la page
default.aspx, celle-ci affichera ses sélections.
Scénario Avant de terminer le processus d'inscription des avantages, l'utilisateur doit
pouvoir afficher ses sélections dans une seule page. Vous avez choisi de
répertorier les avantages sélectionnés dans la page default.aspx. Pour ce faire,
vous utiliserez un cookie persistant.
Pour les pages medical.aspx et life.aspx, vous ajouterez du code qui permet de
lire les valeurs du cookie, de les mettre à jour et de réécrire le cookie.
if (objGetCookie != null)
{
strDoc = objGetCookie.Values["médecin"];
strLife = objGetCookie.Values["vie"];
txtDoctor.Text = strDoc;
txtLife.Text = strLife;
}
if (objGetCookie != null)
{
strDoc = objGetCookie.Values["médecin"];
strLife = objGetCookie.Values["vie"];
}
Visual C# Response.Redirect("default.aspx");
If (chkShortTerm.Checked) Then
If (chkLongTerm.Checked) Then
strLife = "Court terme et long terme"
Else
strLife = "Court terme"
End If
ElseIf (chkLongTerm.Checked) Then
strLife = "Long terme"
End If
strLife &= ": Coverage = $" & txtCoverage.Text
End If
Visual C# if (Page.IsValid)
{
lblMessage.Text = "Valide !";
HttpCookie objCookie =
Request.Cookies["Benefits"];
string strDoc ="";
string strLife ="";
if (objCookie != null)
{
strDoc = objCookie.Values["médecin"];
strLife = objCookie.Values["vie"];
}
if (chkShortTerm.Checked)
{
if (chkLongTerm.Checked)
{
strLife = "Court terme et long terme";
}
else
{
strLife = "Court terme";
}
}
else if (chkLongTerm.Checked)
{
strLife = "Long terme";
}
! Test du cookie
1. Générez et parcourez default.aspx.
2. Cliquez sur le lien Médical.
3. Fournissez les informations requises, puis cliquez sur Enregistrer.
4. Vous êtes redirigé vers la page default.aspx, et les informations relatives à
votre médecin sont affichées.
5. Cliquez sur le lien Assurance vie.
6. Fournissez les informations requises, sélectionnez la couverture à court
terme, à long terme ou les deux, puis cliquez sur Enregistrer.
7. Vous êtes redirigé vers la page default.aspx, et les informations relatives à
votre assurance vie sont affichées.
52 Module 14 : Gestion d'état
Exercice 3
Utilisation des variables d'application
Dans cet exercice, vous ajouterez un compteur de page à la page
retirement.aspx.
Scénario Vous souhaitez offrir à la direction un moyen simple et rapide de déterminer le
nombre d'employés qui se connectent au site Web Benefits. Pour cette raison,
vous avez décidé d'implémenter un compteur de page sur la page default.aspx à
l'aide d'une variable d'application. Vous souhaitez vous assurer que le compteur
comptabilise seulement les visites uniques et non les publications de pages.
! Ajout du code
1. Dans la procédure d'événement Page_Load, ajoutez le code qui permet
d'incrémenter de 1 la valeur de la variable d'application Visites.
2. Le code doit verrouiller la variable d'application avant de l'incrémenter, puis
la déverrouiller. Placez le code de telle sorte qu'il s'exécute uniquement
lorsque la page n'est pas republiée.
3. Ajoutez du code pour attribuer à la propriété Text de la zone de texte
txtVisits la valeur stockée dans la variable d'application Visites. Ce code
doit s'exécuter à chaque chargement de la page.
4. Une fois ces modifications apportées, la procédure d'événement Page_Load
doit ressembler à ce qui suit :
Visual Basic .NET If Not Page.IsPostBack Then
Dim dsRetirement As New DataSet()
dsRetirement.ReadXml( _
Server.MapPath("mutual_funds.xml"))
dgRetirement.DataSource = dsRetirement
dgRetirement.DataBind()
Application.Lock()
Application("Visites") = CInt(Application("Visites")) + 1
Application.UnLock()
End If
txtVisits.Text = CStr(Application("Visites"))
Visual C# if (!Page.IsPostBack)
{
DataSet dsRetirement = new DataSet();
dsRetirement.ReadXml(
Server.MapPath["mutual_funds.xml"]);
dgRetirement.DataSource = dsRetirement;
dgRetirement.DataBind();
Application.Lock();
Application["Visites"]
=Convert.ToInt16(Application["Visites"]) + 1;
Application.UnLock();
}
txtVisits.Text = Application["Visites"].ToString();
Exercice 4
Stockage de variables de session dans une base de données
Dans cet exercice, vous stockerez les variables de session qui contiennent le
nom et la date de naissance de l'utilisateur dans une base de données
SQL Server.
Scénario Dans le cadre du déploiement de votre site Web dans une ferme Web, vous
souhaitez stocker les variables de session dans un endroit central. Vous avez
choisi d'utiliser une base de données SQL Server pour cette solution de
stockage à court terme.