Introduction au Global.asax
La classe Global est la classe capable de gérer des évènements du niveau application. Elle se trouve dans un fichier appellé Global.asax (plus précisément Global.asax.cs ou Global.asax.vb mais nous verrons cela plus loin dans ce document). Le Global.asax est optionnel mais il peut faciliter le développement ainsi que la maintenance d’applications.
On l’utilisera, par exemple , pour écrire une entrée dans un fichier de logs lorsqu’une exception est lancée et n’est pas gérée. Nous verrons également d’autres utilisations possibles sans toutefois les citer toutes tant elles sont nombreuses.
Concrètement, la classe Global est une classe dont il n’existe qu’une instance (ce que l’on appelle « singleton » dans le jargon).
La classe Global est compilée lors du premier appel (comme toutes les classes en asp.NET d’ailleurs) pour en faire une classe MSIL.
Fonctionnement d’une application asp.NET
Le runtime d’asp.NET maintient un pool d’objets HttpApplication. Ainsi, à chaque requête, le runtime prend un de ces objets et l’attache à la requête.
Cet objet HttpApplication ne peut être attaché à une autre requête tant que celle-ci est en cours de traitement.
Lorsque le traitement est terminé, l’objet est remis dans le pool en vue d’une nouvelle utilisation.
Présentation générale du fichier Global.asax
Ce fichier se trouve dans le répertoire racine de l’application asp.NET.
Il est configuré pour rejeter automatiquement toute demande directe par l’url. On ne peut, donc, ni télécharger ni voir le code contenu dans la classe Global.
La classe Global contient plusieurs méthodes qui ont la forme Level_EventName(object sender, AppropriateEvent e).
Voici un exemple de fichiers créés par Visual Studio.NET 2003 :
Global.asax
<%@ Application Codebehind="Global.asax.cs" Inherits="Developpez.Global" %>
Ce fichier fait référence au Global.asax.cs.
Global.asax.cs using System; using System.Collections; using System.ComponentModel; using System.Web; using System.Web.SessionState;
namespace Developpez { /// <summary> /// Description résumée de Global. /// </summary> public class Global : System.Web.HttpApplication { private System.ComponentModel.IContainer components = null;
public Global() { InitializeComponent(); } protected void Application_Start(Object sender, EventArgs e) { } protected void Session_Start(Object sender, EventArgs e) { }
protected void Application_BeginRequest(Object sender, EventArgs e) {}
protected void Application_EndRequest(Object sender, EventArgs e) { }
protected void Application_AuthenticateRequest(Object sender, EventArgs e) { }
protected void Application_Error(Object sender, EventArgs e) { }
protected void Session_End(Object sender, EventArgs e) { }
protected void Application_End(Object sender, EventArgs e) { } #region Code généré par le Concepteur Web Form /// <summary> /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas /// le contenu de cette méthode avec l'éditeur de code. /// </summary>
private void InitializeComponent() { this.components = new System.ComponentModel.Container(); } #endregion } }
0 Comments