Cette documentation est archivée et n’est pas conservée.

Fournisseur d'état de session pour Azure In-Role Cache

Mis à jour: août 2015

ImportantImportant
Microsoft recommande que tous les nouveaux développements utilisent le Cache Redis Azure. Pour une documentation et des conseils actualisés sur le choix d'une offre de Cache Azure, voir Quelle est l'offre Azure Cache qui me convient ?

Le fournisseur d'état de session de est un mécanisme de stockage hors processus pour les applications ASP.NET. Ce fournisseur permet de stocker l'état de votre session dans un cache plutôt que dans la mémoire ou une base de données SQL Server.

Pour accéder à un exemple de mise en cache d'état de session, voir Exemple relatif à l'état de la session de mise en cache et la mise en cache de sortie.

Le fournisseur d'état de session de présente les améliorations suivantes par rapport aux précédents fournisseurs d'état de session ASP.NET :

  • Il utilise la classe NetDataContractSerializer en interne pour la sérialisation de l'état de session.

  • Il peut partager l'état de session entre plusieurs applications ASP.NET.

  • Il prend en charge les accès simultanés au même ensemble d'état de session pour plusieurs lecteurs et un seul éditeur.

  • Il peut utiliser la compression via les propriétés du client de cache.

L'utilisation de la classe NetDataContractSerializer pour la sérialisation permet de prendre en charge davantage de types sérialisables. Ceci inclut les types sérialisables binaires.

Le fournisseur permet à plusieurs applications ASP.NET de lire et d'écrire les mêmes données d'état de session. Prenons l'exemple d'un développeur chargé de deux sites ASP.NET : /contoso et /adventureworks. Le fournisseur d'état de session peut être configuré dans chaque application web de façon à pointer vers le même magasin d'état de session dans le cluster de cache. Ainsi, les deux applications lisent et écrivent les mêmes données d'état de session pour un identificateur de session donné.

Le fournisseur d'état de session prend en charge les accès simultanés au même ensemble d'état de session pour plusieurs lecteurs et un seul éditeur. Dans ce cas, les lecteurs sont définis en tant que pages signalées comme utilisant l'état de session ReadOnly. Les rappels des applications qui sollicitent de façon importante les appels AJAX ne sont pas placés en file d'attente côté serveur si la plupart des schémas d'accès à l'état de session de l'application requièrent uniquement un accès en lecture seule à l'état de session.

  1. Commencez par configurer un cache à utiliser avec le fournisseur ASP.NET. Vous pouvez héberger mise en cache avec une topologie colocalisée ou un rôle dédié.

  2. Utilisez NuGet pour ajouter la prise en charge de mise en cache à votre projet ASP.NET dans Visual Studio. Pour obtenir des instructions, voir Procédure : Préparation de Visual Studio à l'utilisation d'Azure In-Role Cache.

    ImportantImportant
    Cette procédure requiert le dernier gestionnaire de package NuGet (version 2.1.31002.9028 ou supérieure). Pour installer le dernier gestionnaire de package NuGet, accédez à la page http://go.microsoft.com/fwlink/?LinkId=240311.

  3. Supprimez les éléments sessionState existants qui configurent la mise en cache de l'état de session. Ne supprimez pas la section sessionState commentée ajoutée par le package NuGet.

  4. Dans le fichier web.config, supprimez les commentaires de la section sessionState.

        <!-- Azure Caching session state provider -->
        <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
          <providers>
            <add name="AFCacheSessionStateProvider" 
              type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
              cacheName="default" 
              dataCacheClientName="default" 
              applicationName="AFCacheSessionState"/>
          </providers>
        </sessionState>
    

La liste suivante inclut les modifications de configuration facultatives susceptibles d'affecter le fournisseur de caches de sortie.

  • Modifiez le cache nommé ciblé avec l'attribut cacheName de l'élément add.

  • Modifiez la source des paramètres de client de cache avec l'attribut dataCacheClientName de l'élément add. Définissez cet attribut sur le nom d'une section dataCacheClient existante dans le fichier web.config.

  • Changez le comportement du client de cache en modifiant les paramètres de la section dataCacheClient associée. Par exemple, activez la compression avec l'attribut isCompressionEnabled.

    <dataCacheClient name="default" isCompressionEnabled="true">
    
    Pour obtenir la liste des options de configuration disponibles, voir Paramètres de configuration de client In-Role Cache (Web.config). Notez que les fournisseurs ASP.NET pour mise en cache ne prennent pas en charge les types de sérialisation binaires ou personnalisés. Si ces sérialiseurs sont utilisés pour l'état de session, l'exception suivante survient: " Type 'Microsoft.web.DistributedCache.SerializableSessionStateStoreData' in Assembly 'Microsoft.web.DistributedCache, Version=101.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' is not marked as serializable »

  • Modifiez les paramètres du fournisseur d'état de session. Pour obtenir la liste des options de configuration disponibles, voir Paramètres de configuration du fournisseur d'état de session ASP.NET dans Azure In-Role Cache.

Voir aussi

Afficher: