Partager via


Comment : enregistrer des valeurs dans l'état de l'application

Mise à jour : novembre 2007

L'état de l'application est un référentiel de données disponible pour toutes les classes d'une application ASP.NET. Il est stocké en mémoire sur le serveur et se montre plus rapide que l'opération consistant à stocker et à récupérer des informations dans une base de données. Contrairement à l'état de session, spécifique à une session mono-utilisateur, l'état de l'application s'applique à tous les utilisateurs et toutes les sessions. C'est donc un emplacement utile pour stocker de petites quantités de données souvent utilisées et qui restent identiques d'un utilisateur à un autre.

L'état de l'application est stocké dans la classe HttpApplicationState, dont une nouvelle instance est créée la première fois qu'un utilisateur accède à une ressource URL dans une application. La classe HttpApplicationState est exposée par la propriété Application.

L'état de l'application stocke les données sous forme de types de données Object. Vous devez donc reconvertir les données vers le type approprié lors de leur récupération.

L'état de l'application est stocké en mémoire sur le serveur, si bien qu'un volume important de données stocké à cet endroit peut rapidement remplir la mémoire du serveur. Si l'application est redémarrée, les données de l'état de l'application sont perdues. L'état de l'application n'est pas partagé par plusieurs serveurs au sein d'une batterie de serveurs Web, ni par les processus de travail d'un jardin Web. Enfin, l'état de l'application étant libre de threads, toutes les données qui y sont stockées doivent pouvoir prendre en charge la synchronisation de façon intégrée. Pour plus d'informations sur ces sujets, consultez Vue d'ensemble de l'état de l'application ASP.NET et Recommandations sur la gestion d'état ASP.NET.

Pour écrire une valeur dans l'état de l'application

  • Dans votre application, définissez la valeur de la variable de la classe HttpApplicationState.

    L'exemple de code suivant montre comment affecter une chaîne à la variable d'application Message.

    Application("Message") = "Welcome to the Contoso site."
    
    Application["Message"] = "Welcome to the Contoso site.";
    

Pour écrire une valeur dans l'état de l'application lorsque celle-ci démarre

  • Dans le gestionnaire Application_Start du fichier Global.asax de votre application, définissez la valeur de la variable d'état de l'application. Tout comme dans une page .aspx normale, la classe HttpApplicationState est exposée par l'objet Application.

    L'exemple de code suivant montre comment affecter une chaîne à la variable d'application Message et initialiser pour la variable PageRequestCount la valeur 0.

    Application("Message") = "Welcome to the Contoso site."
    Application("PageRequestCount") = 0
    
    Application["Message"] = "Welcome to the Contoso site.";
    Application["PageRequestCount"] = 0;
    

Écriture d'une valeur sur un état de l'application avec verrouillage

Plusieurs threads peuvent accéder en même temps aux variables de l'état de l'application. Il faut donc verrouiller l'état de l'application pour n'écrire que thread par thread avant de définir des valeurs de paramètre, afin d'empêcher l'apparition de données non valides.

Remarque :

Vous devez toujours modifier les données de l'état de l'application dans une instruction lock à moins d'avoir défini un autre type de verrouillage. Pour plus d'informations, consultez Synchronisation des données pour le multithreading.

Pour écrire une valeur dans l'état de l'application avec verrouillage

  • Dans le code qui définit la variable d'application, appelez la méthode HttpApplicationState.Lock, définissez la valeur de l'état de l'application, puis appelez la méthode HttpApplicationState.UnLock pour déverrouiller l'état de l'application, ce qui le libère pour d'autres demandes d'écriture.

    L'exemple de code suivant montre comment verrouiller et déverrouiller l'état de l'application. Le code augmente la variable PageRequestCount de 1, puis déverrouille l'état de l'application.

    Application.Lock()
    Application("PageRequestCount") = _
        CInt(Application("PageRequestCount")) + 1
    Application.UnLock()
    
    Application.Lock();
    Application["PageRequestCount"] = 
        ((int)Application["PageRequestCount"])+1;
    Application.UnLock();
    

Voir aussi

Tâches

Comment : lire les valeurs de l'état de l'application

Concepts

Vue d'ensemble de la gestion d'état ASP.NET

Recommandations sur la gestion d'état ASP.NET

Autres ressources

État de l'application ASP.NET