Proprietà del provider dello stato della sessione ASP.NET
Memorizzazione di sessioni ASP.NET in NCache non richiede programmazione. NCache fornisce un provider di stato sessione ASP.NET scalabile e ad alte prestazioni tramite un'interfaccia personalizzata SessionStateStoreProviderBase implementazione per un'applicazione ASP.NET. Le caratteristiche principali includono il blocco della sessione, la serializzazione JSON, i tentativi configurabili e la possibilità di visualizzare i dati della sessione memorizzati tramite GetByTagPer configurare e recuperare le sessioni ASP.NET nella tua applicazione, apporta le seguenti modifiche.
Modifica il tag dello stato della sessione ASP.NET
Modifica le tue applicazioni web.config archiviare e modificare il <sessionState> sezione come mostrato 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"
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> tag sotto il <system.web> sezione. Ciò garantisce che gli ID di sessione ASP.NET vengano generati nello stesso modo su tutti i nodi. Scopri come generare una chiave macchina per una farm web: 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 memorizzare e recuperare gli oggetti Session di ASP.NET, tieni presente che non puoi memorizzarli direttamente nella cache. Per memorizzare questi oggetti Session nella cache, devi prima serializzarli. Esistono diversi metodi che puoi adottare per serializzare gli oggetti Session. 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
Come alternativa alla 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 nessuna delle tecniche di serializzazione menzionate sopra soddisfa i tuoi requisiti, puoi optare per la serializzazione JSON. L'utilizzo di questo metodo è estremamente veloce e semplice in quanto richiede solo di apportare una singola modifica al tuo web.config file e il resto del lavoro viene svolto da NCache 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 di sessione vengono aggiunti alla cache specificata come elemento della cache con tag NC_ASP.NET_session_data.
I dati della sessione precedentemente memorizzati 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 vengono descritte le coppie chiave-valore specificate in precedenza:
| Member | Descrizione |
|---|---|
sessionAppId |
È un optional string attributo che specifica un identificatore per assicurarsi che l'ID sessione rimanga univoco nel caso in cui più applicazioni utilizzino la stessa cache. L'ID applicazione dovrebbe essere lo stesso per un'applicazione in una web farm. Se non viene specificato alcun ID applicazione, 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 su True, il NCache Session Store Provider blocca esclusivamente l'elemento session store per il quale vengono effettuate più richieste simultanee. Il valore predefinito è False. |
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 su True, tutte le eccezioni dell'API della cache vengono scritte nei registri eventi. Il valore predefinito è False. |
enableLogs |
È un optional Boolean attributo. Quando questo flag è impostato su True, il provider dello store registra tutte le informazioni di errore. I file di registro vengono creati in %NCHOME%\log-files\SessionStoreProvider (Windows) o /opt/ncache/log-files/SessionStoreProvider (Linux). Il valore predefinito è False. |
enableDetailLogs |
un optional Boolean attributo. Quando questo flag è impostato su True, il provider dello store 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 è False. |
exceptionsEnabled |
Questo è un optional Boolean Attributo che specifica se le eccezioni provenienti dall'API della cache vengono propagate all'output della pagina. Impostare questo flag su True è particolarmente utile durante la fase di sviluppo dell'applicazione, poiché le eccezioni forniscono maggiori informazioni sulle cause specifiche dell'errore. Il valore predefinito è False. |
operationRetry |
Specifica il numero di volte in cui il server tenterà nuovamente l'operazione, se la connessione al server viene persa durante l'esecuzione di un'operazione. 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). |
Vedere anche
Condivisione di sessione tra ASP.NET e ASP.NET Core
Backplane ASP.NET SignalR