Propriétés du fournisseur d'état de session ASP.NET
Stockage des sessions ASP.NET dans NCache ne nécessite aucune programmation. NCache Le fournisseur d'état de session ASP.NET est un fournisseur personnalisé SessionStateStoreProviderBase
implémentation pour une application ASP.NET. Pour configurer et récupérer des sessions ASP.NET dans votre application, les modifications suivantes sont requises.
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Conditions préalables à l’état de session ASP.NET
- Installez les packages NuGet suivants dans votre application en fonction de votre NCache Version:
- Enterprise: AspNet.SessionState.NCache
- Professionnel: AspNet.SessionState.NCache.Professionnel
- Open source: AspNet.SessionState.NCache.Open source
- Le cache doit être en cours d'exécution.
Modifier l'état de la session asp.net
Modifiez votre application Web.config fichier et modifiez le <sessionState>
section comme indiqué ci-dessous.
<configuration>
...
<sessionState cookieless="false"
regenerateExpiredSessionId="true"
mode="Custom"
customProvider="NCacheSessionProvider"
timeout="20">
<providers>
<add name="NCacheSessionProvider"
type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"
cacheName="demoCache"
sessionAppId="demoApp"
useInProc="false"
enableLogs="false"
exceptionsEnabled="true"
writeExceptionsToEventLog="false"
AsyncSession="false"
useJsonSerialization="false"
enableLogs="false"
enableSessionLocking="true"
sessionLockingRetry="-1"
emptySessionWhenLocked="false" />
</providers>
</sessionState>
...
</configuration>
Modifier la balise MachineKey pour les fermes Web
Dans le cas de fermes de serveurs Web, ajoutez le <machineKey>
entrée sous <system.web>
section. Il est nécessaire de générer les ID de session ASP.NET de la même manière sur tous les nœuds.
Découvrez comment générer une clé machine pour une batterie de serveurs Web :
Générer une clé de machine pour une ferme Web (IIS 7)
<machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"
decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/>
Sérialisation des objets de session
Avant de commencer à utiliser NCache pour stocker et récupérer vos objets de session ASP.NET, vous devez savoir que vous ne pouvez pas stocker ces objets directement dans le cache. Pour stocker ces objets de session dans le cache, vous devez d'abord les sérialiser. Il existe différentes méthodes que vous pouvez adopter pour sérialiser vos objets de session. Ces méthodes sont les suivantes :
Sérialisation binaire
Vous pouvez utiliser cette méthode de sérialisation si vous avez accès au code source de l'application. Dans ce cas, vous devez marquer tous les objets (ceux que vous souhaitez stocker dans le cache) comme sérialisables.
Notes
Cependant, cette méthode est obsolète à partir de .NET 6.0 et si vous utilisez la sérialisation binaire ou la sérialisation compacte dans toutes les applications ASP.NET, elles lèveront une exception informant les utilisateurs en conséquence.
NCache Sérialisation compacte
Si vous ne pouvez pas ou ne voulez pas utiliser la sérialisation binaire, vous pouvez utiliser NCache Sérialisation compacte pour sérialiser vos objets de session. C'est plus rapide et nécessite uniquement de modifier vos fichiers de configuration au lieu de modifier le code source.
Le seul problème avec cette méthode est que le changement de configuration peut être important si le nombre de classes que vous souhaitez sérialiser est important.
Sérialisation JSON
Si l'une des techniques de sérialisation mentionnées ci-dessus ne fait pas l'affaire pour vous, vous pouvez opter pour la sérialisation JSON à la place. La meilleure partie de cette méthode est qu'elle est ultra rapide et simple car elle ne nécessite qu'une seule modification de votre fichier. web.config fichier et le reste du travail est effectué par NCache automatiquement à l'exécution.
Il vous suffit de définir la valeur de usejsonserialization
marquer comme True. Par défaut, la valeur de cet indicateur est False.
Récupérer les données de session
NCache permet de visualiser toutes les données de session stockées dans un cache cluster via le NCache Module d'état de session. Toutes les données de session sont ajoutées dans le cache spécifié en tant qu'élément de cache balisé avec Tag : NC_ASP.net_session_data
.
Pour récupérer les données de session précédemment stockées, les données peuvent être récupérées par GetByTag
API, qui renvoie un dictionnaire rempli d'ID de session et de données de session associées stockées dans le cache.
var allSessionData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_session_data"));
Propriétés de l'état de la session
Voici la description des différentes paires clé-valeur spécifiées ci-dessus :
Membre | Description |
---|---|
sessionAppId |
C'est une option string attribut qui spécifie un identifiant pour garantir que l'ID de session reste unique au cas où plusieurs applications utiliseraient le même cache. L’ID d’application doit être le même pour une application dans une batterie de serveurs Web. Si aucun ID d'application n'est spécifié, rien ne sera concaténé à l'ID de session. |
cacheName |
C'est une obligation String attribut qui spécifie le nom du cache à utiliser pour la session de mise en cache. Si aucun nom de cache n'est spécifié, une exception de configuration sera levée. |
enableSessionLocking |
En option, Boolean attribut. Si cet indicateur est activé, le NCache Le fournisseur de magasin de sessions verrouille exclusivement l'élément de magasin de sessions pour lequel plusieurs demandes simultanées sont effectuées. Le défaut est faux. |
sessionLockingRetry |
Ceci est une option Integer attribut. Si enableSessionLocking est vrai et cet entier n'est pas inférieur à 0, le NCache Le fournisseur de magasin de sessions renverra une session vide après sessionLockingRetry , qui spécifie le nombre de tentatives d'acquisition d'un verrou. La valeur par défaut est -1. |
writeExceptionsToEventLog |
En option, Boolean attribut. Si cet indicateur est défini, toutes les exceptions de l'API de cache sont écrites dans les journaux d'événements. Le défaut est faux. |
enableLogs |
C'est une option Boolean attribut. Lorsque cet indicateur est défini, le fournisseur de magasin enregistre toutes les informations d'erreur. Les fichiers journaux sont créés dans %NCHOME%\log-files\SessionStoreProvider (Windows) ou /opt/ncache/log-files/SessionStoreProvider (Linux). Le défaut est faux. |
enableDetailLogs |
En option, Boolean attribut. Lorsque cet indicateur est défini, le fournisseur de magasin enregistre toutes les informations de débogage. Les fichiers journaux sont créés dans %NCHOME%\log-files\SessionStoreProvider (Windows) ou /opt/ncache/log-files/SessionStoreProvider (Linux). Le défaut est faux. |
exceptionsEnabled |
Ceci est une option Boolean attribut qui spécifie si les exceptions de l'API de cache sont propagées à la sortie de la page. Définir cet indicateur sur True est particulièrement utile pendant la phase de développement de l'application, car les exceptions fournissent plus d'informations sur les causes spécifiques de l'échec. Le défaut est faux. |
operationRetry |
Il spécifie le nombre de fois que le serveur réessayera l'opération, en cas de perte de connexion avec un serveur pendant l'exécution d'une opération. Sa valeur par défaut est 0 (zéro). |
operationRetryInterval |
Il précise l'intervalle de temps entre chaque nouvelle tentative d'opération, en cas de perte de connexion avec le serveur. Sa valeur par défaut est 0 (zéro). |
usejsonserialization |
Il s'agit d'un attribut booléen. Si vous souhaitez utiliser la sérialisation JSON pour vos objets de session ASP.NET, définissez la valeur de cet attribut sur True. Par défaut, la valeur de cet attribut est False. |
Voir aussi
.RAPPORTER: Alachisoft.NCache.Web.SessionState espace de noms.