Les fichiers Global.asax, parfois appelés fichiers d'application ASP.NET, fournissent un emplacement central pour répondre aux événements au niveau de l'application ou du module. Vous pouvez utiliser ce fichier pour implémenter la sécurité des applications et d'autres tâches.
Le fichier Global.asax est configuré pour que toute requête HTTP directe (via l'URL) soit automatiquement rejetée, afin que les utilisateurs ne puissent pas télécharger ou visualiser son contenu. L'infrastructure de pages ASP.NET reconnaît automatiquement toutes les modifications apportées au fichier Global.asax. L'infrastructure de pages ASP.NET redémarre l'application après la modification de Global.asax, ce qui inclut la fermeture de toutes les sessions du navigateur, la suppression de toutes les informations d'état et le redémarrage du domaine d'application.
Le fichier Global.asax hérite de la classe HttpApplication, qui gère un pool d'objets HttpApplication et alloue les objets du pool aux applications en cas de besoin. Le fichier Global.asax contient les événements suivants :
· Application_Init : cet événement est déclenché lorsque l'application est instanciée ou appelée pour la première fois. Il sera appelé pour toutes les instances d’objet HttpApplication.
· Application_Disposed : déclenché avant la destruction de l'application. C'est un endroit idéal pour vider les ressources précédemment utilisées.
· Application_Error : cet événement est déclenché lorsqu'une exception non gérée est rencontrée dans l'application.
· Application_Start : cet événement est déclenché lorsque la première instance de la classe HttpApplication est créée. Il vous permet de créer des objets accessibles par toutes les instances de HttpApplication.
· Application_End : cet événement est déclenché lorsque la dernière instance de la classe HttpApplication est détruite. Il n'est déclenché qu'une seule fois au cours de la vie d'une application.
· Application_BeginRequest : Déclenché lorsqu'une demande d'application est reçue. Pour une requête, c'est le premier événement à déclencher. La requête est généralement une requête de page (URL) saisie par l'utilisateur.
· Application_EndRequest : Le dernier événement demandé par l'application.
· Application_PreRequestHandlerExecute : cet événement est déclenché avant que l'infrastructure de pages ASP.NET ne commence à exécuter un gestionnaire d'événements tel qu'une page ou un service Web.
· Application_PostRequestHandlerExecute : cet événement est déclenché lorsque l'infrastructure de pages ASP.NET termine l'exécution d'un gestionnaire d'événements.
· Applcation_PreSendRequestHeaders : cet événement est déclenché lorsque le cadre de page ASP.NET envoie des en-têtes HTTP au client demandeur (navigateur).
· Application_PreSendContent : cet événement est déclenché lorsque la structure de pages ASP.NET envoie du contenu au client demandeur (navigateur).
· Application_AcquireRequestState : cet événement est déclenché lorsque la structure de pages ASP.NET obtient l'état actuel (état de session) lié à la demande en cours.
· Application_ReleaseRequestState : cet événement est déclenché lorsque l'infrastructure de pages ASP.NET a terminé l'exécution de tous les gestionnaires d'événements. Cela amènera tous les modules d’état à enregistrer leurs données d’état actuelles.
· Application_ResolveRequestCache : cet événement est déclenché lorsque l'infrastructure de pages ASP.NET termine une demande d'autorisation. Il permet au module de cache de répondre aux requêtes du cache, contournant ainsi l'exécution des gestionnaires d'événements.
· Application_UpdateRequestCache : cet événement est déclenché lorsque la structure de pages ASP.NET termine l'exécution du gestionnaire d'événements, permettant au module de cache de stocker les données de réponse à utiliser pour répondre aux demandes ultérieures.
· Application_AuthenticateRequest : cet événement est déclenché lorsque le module de sécurité établit une identité valide pour l'utilisateur actuel. A ce moment, les informations d'identification de l'utilisateur seront vérifiées.
· Application_AuthorizeRequest : Cet événement est déclenché lorsque le module de sécurité confirme qu'un utilisateur peut accéder à la ressource.
· Session_Start : cet événement est déclenché lorsqu'un nouvel utilisateur accède au site Web de l'application.
· Session_End : cet événement est déclenché lorsque la session d'un utilisateur expire, se termine ou lorsqu'il quitte le site Web de l'application.
Un problème clé lors de l’utilisation de ces événements est de connaître l’ordre dans lequel ils sont déclenchés. Les événements Application_Init et Application_Start sont déclenchés une fois lors du premier démarrage de l'application. De même, les événements Application_Disposed et Application_End sont déclenchés une fois lorsque l'application se termine. De plus, les événements basés sur la session (Session_Start et Session_End) sont utilisés uniquement lorsque les utilisateurs entrent et quittent le site. Les événements restants traitent les demandes d'application. L'ordre dans lequel ces événements sont déclenchés est le suivant :
· Application_BeginRequest
· Application_AuthenticateRequest
· Application_AuthorizeRequest
· Application_ResolveRequestCache
· Application_AcquireRequestState
· Application_PreRequestHandlerExecute
· Application_PreSendRequestHeaders
· Application_PreSendRequestContent
· <<Execution Code>>
·
Application_PostRequestHandlerExecute
· Application_ReleaseRequestStat
. e · Application_UpdateRequestCache· Application_EndRequest
ces événements Souvent utilisé à des fins de sécurité. L'exemple C# suivant illustre les différents événements Global.asax, en utilisant l'événement Application_Authenticate pour effectuer une authentification basée sur un formulaire via des cookies. De plus, l'événement Application_Start remplit une variable d'application et Session_Start remplit une variable de session. L'événement Application_Error affiche un message simple décrivant l'erreur qui s'est produite.
protected void Application_Start (expéditeur de l'objet, EventArgs e) {
Application["Titre"] = "Exemple Builder.com" ;
}
protected void Session_Start (expéditeur d'objet, EventArgs e) {
Session["startValue"] = 0;
}
protected void Application_AuthenticateRequest (Expéditeur d'objet, EventArgs e) {
//Extraire le cookie d'authentification par formulaire
chaîne cookieName = FormsAuthentication.FormsCookieName ;
HttpCookie authCookie = Context.Request.Cookies[cookieName];
si (null == authCookie) {
// Il n'y a pas de cookie d'authentification.
retour;
}
FormsAuthenticationTicket authTicket = null;
essayer {
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
} catch(Exception ex) {
// Détails de l'exception du journal (omis pour plus de simplicité)
retour;
}
si (null == authTicket) {
// Le cookie n'a pas pu être déchiffré.
retour;
}
// Lors de la création du ticket, la propriété UserData a été attribuée
// une chaîne de noms de rôles délimitée par des barres.
rôles string[2]
rôles[0] = "Un"
rôles[1] = "Deux"
// Crée un objet Identité
ID FormsIdentity = new FormsIdentity( authTicket );
// Ce principal circulera tout au long de la requête.
GenericPrincipal principal = new GenericPrincipal(id, rôles);
// Attache le nouvel objet principal à l'objet HttpContext actuel
Contexte.Utilisateur = principal ;
}
protected void Application_Error (expéditeur d'objet, EventArgs e) {
Response.Write("Erreur rencontrée.");
}
http://www.cnblogs.com/niit007/archive/2006/08/13/475565.html