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("
Ce header a été ajouté par l'événement Application_BeginRequest
") 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