Les Labs Microsoft
Section C# / Asp.Net du site http://phenix.developez.com
par Patrick VALERI
Plan du site - Autres sections
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
J'ai repris les codes d'origine VB.NET en C# et apporter quelques commentaires.
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 contrôle « textbox » et cliquer sur le bouton correspondant
- Cliquer maintenant sur le deuxième bouton
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 :
- 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 ».
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
- Démarrer le service ASPNET State Service depuis la console d’administration ou en ligne de commande :
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 »
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
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
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 »