Proprietà del provider di stato della sessione ASP.NET
Memorizzazione delle sessioni ASP.NET in NCache non richiede programmazione. NCache Il provider di stato sessione ASP.NET è personalizzato SessionStateStoreProviderBase
implementazione per un'applicazione ASP.NET. Per configurare e recuperare sessioni ASP.NET nell'applicazione, sono necessarie le modifiche seguenti.
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Prerequisiti dello stato della sessione ASP.NET
- Installa i pacchetti NuGet seguenti nell'applicazione in base al tuo NCache Versione:
- Enterprise: AspNet.SessionState.NCache
- Saloni professionali: AspNet.SessionState.NCache.Professionale
- Fonte aperta: AspNet.SessionState.NCache.Open Source
- La cache deve essere in esecuzione.
Modifica il tag dello stato della sessione asp.net
Modifica le tue applicazioni web.config archiviare e modificare il <sessionState>
sezione come indicato di seguito.
<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>
Modifica il tag MachineKey per le Web Farm
Nel caso delle web farm aggiungere il file <machineKey>
entrata sotto <system.web>
sezione. È necessario generare ID sessione ASP.NET nello stesso modo su tutti i nodi.
Scopri come generare una chiave macchina per una web farm:
Genera una chiave macchina per una Web Farm (IIS 7)
<machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"
decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/>
Serializzazione di oggetti di sessione
Prima di iniziare a usare NCache per archiviare e recuperare gli oggetti Session ASP.NET, è necessario sapere che non è possibile archiviare questi oggetti direttamente nella cache. Per archiviare questi oggetti di sessione nella cache, è necessario prima serializzarli. Esistono diversi metodi che puoi adottare per serializzare gli oggetti della sessione. Questi metodi sono i seguenti:
Serializzazione binaria
Puoi utilizzare questo metodo di serializzazione se hai accesso al codice sorgente dell'applicazione. In questo caso, devi contrassegnare tutti gli oggetti (quelli che desideri archiviare nella cache) come serializzabili.
Note:
Tuttavia, questo metodo è obsoleto a partire da .NET 6.0 e se si utilizza la serializzazione binaria o la serializzazione compatta all'interno di qualsiasi applicazione ASP.NET, verrà generata un'eccezione che informa gli utenti di conseguenza.
NCache Serializzazione compatta
Se non puoi o non vuoi usare la serializzazione binaria, puoi usare NCache Serializzazione compatta per serializzare gli oggetti della sessione. È più veloce e richiede solo la modifica dei file di configurazione invece di modificare il codice sorgente.
L'unico problema con questo metodo è che la modifica alla configurazione può essere notevole se il numero di classi che si desidera serializzare è elevato.
Serializzazione JSON
Se una delle tecniche di serializzazione sopra menzionate non fa il lavoro per te, puoi invece optare per la serializzazione JSON. La parte migliore di questo metodo è che è super veloce e semplice in quanto richiede solo di apportare una singola modifica al tuo file web.config file e il resto del lavoro viene svolto da NCache automaticamente in fase di esecuzione.
Devi solo impostare il valore di usejsonserialization
contrassegnare come Vero. Per impostazione predefinita, il valore di questo flag è False.
Recupera i dati della sessione
NCache consente di visualizzare tutti i dati della sessione archiviati in una cache in cluster tramite il file NCache Modulo stato sessione. Tutti i dati della sessione vengono aggiunti nella cache specificata come elemento della cache contrassegnato con Tag: NC_ASP.net_session_data
.
Per recuperare i dati della sessione precedentemente memorizzati, i dati possono essere recuperati da GetByTag
API, che restituisce un dizionario popolato con ID di sessione e dati di sessione associati archiviati nella cache.
var allSessionData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_session_data"));
Proprietà SessionState
Di seguito è riportata la descrizione delle diverse coppie chiave-valore specificate sopra:
Member | Descrizione |
---|---|
sessionAppId |
È un optional string attributo che specifica un identificatore per garantire che l'ID di sessione rimanga univoco nel caso in cui più applicazioni utilizzino la stessa cache. L'ID applicazione deve essere lo stesso per un'applicazione in una Web farm. Se non viene specificato alcun ID app, nulla verrà concatenato con l'ID sessione. |
cacheName |
Questo è un requisito String attributo che specifica il nome della cache da utilizzare per la sessione di memorizzazione nella cache. Se non viene specificato alcun nome cache, verrà generata un'eccezione di configurazione. |
enableSessionLocking |
un optional Boolean attributo. Se questo flag è impostato, il NCache Il provider dell'archivio sessioni blocca esclusivamente l'elemento dell'archivio sessioni per il quale vengono effettuate più richieste simultanee. Il valore predefinito è Falso. |
sessionLockingRetry |
Questo è un optional Integer attributo. Se enableSessionLocking è True e questo numero intero non è inferiore a 0, il NCache Il Session Store Provider restituirà una sessione vuota dopo sessionLockingRetry , che specifica il numero di tentativi per acquisire un blocco. Il valore predefinito è -1. |
writeExceptionsToEventLog |
un optional Boolean attributo. Se questo flag è impostato, tutte le eccezioni dell'API cache vengono scritte nei registri eventi. Il valore predefinito è Falso. |
enableLogs |
È un optional Boolean attributo. Quando questo flag è impostato, il provider del negozio registra tutte le informazioni sull'errore. I file di registro vengono creati in %NCHOME%\log-files\SessionStoreProvider (Windows) o /opt/ncache/log-files/SessionStoreProvider (Linux). Il valore predefinito è Falso. |
enableDetailLogs |
un optional Boolean attributo. Quando questo flag è impostato, il provider del negozio registra tutte le informazioni di debug. I file di registro vengono creati in %NCHOME%\log-files\SessionStoreProvider (Windows) o /opt/ncache/log-files/SessionStoreProvider (Linux). Il valore predefinito è Falso. |
exceptionsEnabled |
Questo è un optional Boolean attributo che specifica se le eccezioni dall'API della cache vengono propagate all'output della pagina. L'impostazione di questo flag su True è particolarmente utile durante la fase di sviluppo dell'applicazione poiché le eccezioni forniscono ulteriori informazioni sulle cause specifiche dell'errore. Il valore predefinito è Falso. |
operationRetry |
Specifica il numero di volte in cui il server ritenterà l'operazione, nel caso in cui venga persa la connessione con un server mentre un'operazione è in esecuzione. Il suo valore predefinito è 0 (zero). |
operationRetryInterval |
Specifica l'intervallo di tempo tra ogni nuovo tentativo di operazione, nel caso in cui venga persa la connessione con il server. Il suo valore predefinito è 0 (zero). |
usejsonserialization |
Questo è un attributo booleano. Se si desidera utilizzare la serializzazione JSON per gli oggetti Session ASP.NET, impostare il valore di questo attributo su True. Per impostazione predefinita, il valore di questo attributo è False. |
Vedere anche
.NETTO: Alachisoft.NCache.Web.SessionStato spazio dei nomi.