Vous êtes sur la page 1sur 9

Labs ASP.NET v1.

1 Aurélien Norie & Sébastien Bovo [Microsoft]

Lab08

But du Lab

Le but de ce Lab est d’utiliser la gestion de l’état des applications ASP.NET. Cet état peut
se gérer au niveau application et au niveau session. L’utilisation sera faite des différents
modes de stockage de l’état d’application. Enfin, la gestion des événements de
l’application sera faite dans le fichier Global.asax.

Exercice 1 – Gestion de l’état d’application

- A l’aide de Visual Studio .NET, créer une nouvelle application Web ASP.NET en
Visual Basic : « http://localhost/08VBEtatApplication »
- Ajouter deux zones de texte (« TextBox1 » et « TextBox2 ») et deux boutons
(« Button1 » et Button2 ») :

- Double-cliquer sur « Button1 » et ajouter le code suivant :


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Session("TestVariable") = TextBox1.Text
End Sub

- Double-cliquer sur « Button2 » et ajouter le code suivant :


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
TextBox2.Text = Session("TestVariable")
End Sub

- Naviguer sur la page


- Entrer un texte dans le premier contôle « textbox » et cliquer sur le bouton
correspondant
- Cliquer maintenant sur le deuxième bouton

Page 1 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

Exercice 2 – Session SQLServer

- Lancer « l’Analyseur de requêtes » de SQL Server. Se connecter au serveur local


avec le nom « SA », et mot de passe « EDUCATION »
- Activer la commande « Fichier/Ouvrir » :
« C:\Windows\Microsoft.NET\Framework\v1.1.4322\InstallSqlState.sql »
- Exécuter le contenu SQL de ce fichier
Remarque : pour désinstaller, répéter la manipulation avec le fichier:
« C:\Windows\Microsoft.NET\Framework\v1.1.4322\UninstallSqlState.sql »
- Modifier le fichier Web.config comme suit afin de préciser que l’état de
l’application sera stocké au niveau du serveur SQL local, puis enregistrer :
<sessionState
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;user
id=sa;password=EDUCATION"
cookieless="false"
timeout="20"
/>

- Depuis l’Analyseur de requêtes de SQL Serveur, exécuter le code SQL suivant sur
la base tempdb :

Page 2 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

- Sans recompiler, tester depuis le navigateur

- Exécuter à nouveau la requête SQL :

- Observer que la variable de Session est stockée dans la table


« ASPStateTempSessions » de la base « tempdb ».

Page 3 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

Exercice 3 – Session StateServer

- Dans Visual Studio .NET, éditer le fichier Web.config et modifier le comme suit :
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data
source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>

- Sans recompiler, tester depuis le navigateur

Page 4 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

- Démarrer le service ASPNET State Service depuis la console d’administration ou


en ligne de commande :

- Rafraîchir la page :

Page 5 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

Exercice 4 – Global.asax (Application_Start et Application_End)

- Ouvrir le fichier « Global.asax » et modifier le code comme suit :


Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Se déclenche lorsque l'application est démarrée
Dim fichier As System.IO.TextWriter =
System.IO.File.AppendText("C:\InetPub\wwwroot\08VBEtatApplication\Applicati
on.log")
fichier.WriteLine(String.Format("L'application Web a démarré à {0}",
DateTime.Now))
fichier.Close()
End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)


' Se déclenche lorsque l'application se termine
Dim fichier As System.IO.TextWriter =
System.IO.File.AppendText("C:\InetPub\wwwroot\08VBEtatApplication\Applicati
on.log")
fichier.WriteLine(String.Format("L'application Web s'est arrêtée à
{0}", DateTime.Now))
fichier.Close()
End Sub

- Afin que la création et modification du fichier de log soit possible, il importe


d’ajouter les permissions de lecture/écriture au compte « Service réseau » (pour
Windows 2003 Serveur, ou le compte « ASPNET » pour Windows 2000 et Windows
XP) sur le répertoire « C:\InetPub\wwwroot\08VBEtatApplication »
- Recompiler le code. Effectuer plusieurs tentatives d’arrêts/redémarrages du
serveur IIS (« net stop W3SVC » et « net start W3SVC ») entre mêlés d’une
navigation sur la page WebForm1.aspx
- Regarder le fichier « Application.log »

Page 6 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

Exercice 5 – Global.asax (Session_Start et Session_End)

- Modifier le code comme suit :


Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Se déclenche lorsque la session est démarrée
Dim fichier As System.IO.TextWriter =
System.IO.File.AppendText(("C:\InetPub\wwwroot\08VBEtatApplication\Applicat
ion.log"))
fichier.WriteLine(String.Format("Nouvelle session {0} créée le {1}",
Session.SessionID, DateTime.Now))
fichier.Close()
End Sub

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)


' Se déclenche lorsque la session se termine
Dim fichier As System.IO.TextWriter =
System.IO.File.AppendText(("C:\InetPub\wwwroot\08VBEtatApplication\Applicat
ion.log"))
fichier.WriteLine(String.Format("La session {0} a été detruite le {1}",
Session.SessionID, DateTime.Now))
fichier.Close()
End Sub

- Compiler le code et naviguer sur la page WebForm1.aspx

Page 7 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

Exercice 6 – Global.asax (Application_BeginRequest et


Application_EndRequest)

- Modifier le code comme suit :

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)


' Se déclenche au début de chaque demande
Response.Write("<H3>Ce header a été ajouté par l'événement
Application_BeginRequest</H3>")
End Sub

- Compiler et naviguer sur la page WebForm1.aspx


- Constater que ce header est ajouté pour toute page de l’application

Page 8 sur 9
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]

Exercice 7 – Global.asax (Application_Error)

- Ajouter une nouvelle page « WebForm2.Aspx » au projet


- Modifier le code comme suit afin de générer un exception :
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Throw New System.DivideByZeroException("Division par zéro")
End Sub

- Ajouter une nouvelle page « Erreur.aspx » et ajoutez un label « Label1 » :

- Modifier le fichier « Global.asax » comme suit :


Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Se déclenche lorsqu'une erreur se produit
Server.Transfer("Erreur.aspx", True)
End Sub

- Compiler et naviguer sur la page « WebForm2.aspx »

Page 9 sur 9