INFO : instances de l'application, événements Application et état d'application dans ASP.NET

Traductions disponibles Traductions disponibles
Numéro d'article: 312607 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

L'objet ASP.NET HttpApplication masque nombreux concepts complexes pour simplifier le modèle de programmation. Cet article décrit certaines de ces complexités. En outre, cet article décrit comment ASP.NET gère les problèmes de compatibilité avec l'objet de Microsoft Active Server Pages (ASP) application classique.

Cet article est répartie dans les sections suivantes :

Plus d'informations

Classe d'application et instances d'application

Une classe d'application est définie dans le fichier global.asax. Le code dans Global.asax définit une classe dérivée de System.Web.HttpApplication . En l'absence d'un fichier global.asax, la classe de base, HttpApplication , est utilisée en tant que classe application.

Le runtime ASP.NET crée des instances autant de classes d'application nécessaires pour traiter les demandes simultanément. Pour la plupart des applications, ce nombre est limité au nombre de threads et reste dans la plage de 1 et 100, selon le matériel, charge du serveur, configuration et ainsi de suite. Nombreuses requêtes réutiliser les instances de l'application, et une liste libre des instances d'application est conservée pendant les périodes de charge réduite. Instances de l'application sont utilisées de thread-safe manière, c'est-à-dire qu'une demande à la fois. Cela a des conséquences importantes :
  • Vous devez préoccuper de verrouillage lorsque vous accédez aux membres non statique de la classe application.
  • Code de l'application peut stocker des données demande pour chaque demande dans membres non statique de la classe application (mais pas après l'événement EndRequest parce que cet événement peut gérer la demande pour beaucoup de temps).
Comme des membres statiques d'une classe, y compris une classe application, ne sont pas thread-safe, le code utilisateur doit fournir de verrouillage appropriée pour accéder aux membres statiques. Cela s'applique à n'importe quel membre statique que vous ajoutez à la classe d'application.

Suivez les instructions suivantes pour accéder à l'instance d'application associé à la demande actuelle :
  • À partir de la global.asax, utilisez le ce m'objet ou.
  • À partir d'une page, chaque page inclut une propriété ApplicationInstance fortement typées.
  • De l'objet HttpContext , utilisez la propriété HttpContext.ApplicationInstance (que vous tapez comme HttpApplication ).
note Parce que application fait référence au dictionnaire état application globale dans ASP classique, ASP.NET utilise ApplicationInstance et pas d' application comme nom de propriété pour faire référence à l'instance d'application qui traite la demande actuelle.

Événements d'application

La durée de vie d'une demande se compose d'une série des événements d'application (et quelques étapes implicites qui implémente ASP.NET). Ces événements sont répertoriés ci-dessous dans l'ordre dans lequel elles sont exécutées :
  1. BeginRequest
  2. événement AuthenticateRequest
  3. événement interne DefaultAuthentication
  4. événement AuthorizeRequest
  5. événement ResolveRequestCache
  6. Étape interne « Gestionnaire de mappage » (lorsque la compilation se produit, une instance de page est créée)
  7. événement AcquireRequestState
  8. événement PreRequestHandlerExecute
  9. Étape interne pour « exécuter Gestionnaire » (lorsque le code de page est exécuté)
  10. événement PostRequestHandlerExecute
  11. événement ReleaseRequestState
  12. Étape interne à filtre réponses UpdateRequestCache événement
  13. événement UpdateRequestCache
  14. événement EndRequest
note Si vous utilisez Server.Transfer ou Response.Redirect(string) , la requête en cours est effectivement interrompue et des événements qui sont répertoriées ci-dessus ne pas être déclenchés. Toutefois, l'événement EndRequest est générée dans ce scénario.

Les éléments suivants peuvent gérer ces événements :
  • Interne structure de page ASP.NET (par exemple, les étapes 6, 9 et 12 dans la liste précédente).
  • Modules HTTP qui sont configurés pour l'application. La liste par défaut de modules HTTP est définie dans le fichier machine.config.
  • Code dans Global.asax qui est associé via la méthode Application_ [activé] EventName ou qui est associé explicitement lorsque vous ajoutez des gestionnaires d'événements pour un autre nom.
Chaque événement peut avoir des abonnés synchrones et asynchrones. Abonnés asynchrones sont exécutées tout d'abord. Pas tous les événements sont toujours exécutés ; le seul événement qui est toujours exécuté est EndRequest . En conséquence, effectuer tout after-request nettoyage dans l'événement EndRequest .

note Dans la plupart des cas, la réponse réelle est envoyée au client une fois l'instance de l'application terminée avec la réponse (qui est après EndRequest ).

Application_OnStart et Application_OnEnd

ASP.NET introduit le unique Application_OnStart et Application_OnEnd « événements » pour la compatibilité avec L'ASP classique. Ces événements sont exécutées qu'une seule fois dans la durée de vie d'une application et non pour chaque instance de l'application. Par conséquent, si vous modifiez les membres non statique de ces méthodes, vous n'affecte qu'une seule application instance et pas toutes les instances. Vous pouvez initialiser une instance d'application dans le constructeur ou en remplaçant la méthode Init .

Application_OnStart est un équivalent logique au constructeur de classe pour la classe application, mais il offre un avantage : le code a accès à l' objet HttpContext pour la première requête à l'application.

État de l'application

État de l'application est un dictionnaire global des objets tardive, ce qui introduit L'ASP classique pour compenser l'absence de variables globales dans Microsoft Visual Basic Scripting Edition (VBScript). Dans ASP.NET, vous pouvez accéder l'état de l'application via une des options suivantes :
  • propriété Application (qui est définie dans les classes HttpApplication et page )
  • HttpContext.Application
ASP.NET comprend l'état d'application principalement à assurer la compatibilité avec L'ASP classique afin que faciliter la migration d'applications existantes vers ASP.NET. Il est recommandé de stocker données dans les membres statiques de la classe application plutôt que dans l'objet Application . Cela augmente les performances car vous pouvez y accéder une variable statique plus rapidement que pouvoir accéder à un élément dans l'application dictionnaire.

Pour accéder application statique membres à partir de pages dans Visual C# .NET et Microsoft Visual Basic .NET, vous devez utiliser l'attribut ClassName dans Global.asax pour nommer votre classe d'application. Pour exemple :
<%@ Application Language="C# | VB" ClassName="MyClass" %>
				
si un membre statique est nommé MyStaticMember dans votre fichier global.asax, vous pouvez utiliser MyClass.MyStaticMember pour y accéder à partir votre page.

Propriétés

Numéro d'article: 312607 - Dernière mise à jour: mercredi 21 janvier 2004 - Version: 5.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Mots-clés : 
kbmt kbappdev kbhttpruntime kbinfo kbstate KB312607 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 312607
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com