11
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 11

Lab08 - Gestion de l'Application Et Global.asax

Embed Size (px)

Citation preview

Page 1: Lab08 - Gestion de l'Application Et Global.asax

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.TextEnd 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

Page 2: Lab08 - Gestion de l'Application Et Global.asax

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 fichierRemarque : 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

Page 3: Lab08 - Gestion de l'Application Et Global.asax

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

Page 4: Lab08 - Gestion de l'Application Et Global.asax

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

Page 5: Lab08 - Gestion de l'Application Et Global.asax

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

Page 6: Lab08 - Gestion de l'Application Et Global.asax

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\Application.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\Application.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

Page 7: Lab08 - Gestion de l'Application Et Global.asax

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\Application.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\Application.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

Page 8: Lab08 - Gestion de l'Application Et Global.asax

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

Page 9: Lab08 - Gestion de l'Application Et Global.asax

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