ASP.NET Core Configurazione del provider di sessione
Da configurare NCache ASP.NET Core Provider di sessione, segui i passaggi seguenti.
Prerequisiti
- Installa i pacchetti NuGet seguenti nell'applicazione in base al tuo NCache Versione:
- Enterprise: AspNetCore.Session.NCache.
- Saloni professionali: AspNetCore.Session.NCache.Professionale
- Fonte aperta: AspNetCore.Session.NCache.Open Source
- Per utilizzare l'estensione, includi i seguenti spazi dei nomi nella tua applicazione in Avvio.cs:
- La cache deve essere in esecuzione.
- Per i dettagli dell'API, fare riferimento a: AggiungiNCacheSessione.
- Assicurati che i dati aggiunti lo siano serializzabile.
- Per garantire che l'operazione sia a prova di errore, si consiglia di gestire eventuali potenziali eccezioni all'interno dell'applicazione, come spiegato in Gestione dei guasti.
- Per gestire eventuali eccezioni invisibili, fare riferimento a Troubleshooting .
Passaggio 1: configurazione NCache Servizio di gestione delle sessioni
È necessario inizializzare il servizio di gestione della sessione Avvio.cs. Esistono due metodi per specificare le configurazioni:
- Attraverso la tua applicazione in Avvio.cs or
- In formato JSON in Appsettings.json
Note:
La configurazione deve sempre contenere il nome della cache.
Metodo 1: specifica delle configurazioni in Startup.cs
Le sessioni possono essere inizializzate da AddNCacheSession
metodo di estensione che accetta un file IOptions<NCacheSessionConfiguration>
oggetto come configurazione.
In Avvio.cs della tua applicazione, aggiungi il seguente codice nel file ConfigureServices
Metodo:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container with configured session
services.AddNCacheSession(configuration =>
{
configuration.CacheName = "demoCache";
configuration.EnableLogs = true;
configuration.SessionAppId = "demoApp";
configuration.SessionOptions.IdleTimeout = 5;
configuration.SessionOptions.CookieName = "AspNetCore.Session";
});
}
Metodo 2: specifica delle configurazioni in Appsettings.json
Le configurazioni per i servizi possono essere fornite anche in formato JSON come sezione in Appsettings.json della tua applicazione ASP.NET:
{
"NCacheSettings": {
"SessionAppId": "demoApp",
"SessionOptions": {
"CookieName": "AspNetCore.Session",
"CookieDomain": null,
"CookiePath": "/",
"CookieHttpOnly": "True",
"IdleTimeout": "5",
"CookieSecure": "None",
"useJsonSerialization": true,
"WriteExceptionsToEventLog": true,
},
"CacheName": "demoCache",
"EnableLogs": "True",
"RequestTimeout": "90"
},
}
Note:
Non è consigliabile utilizzare il WriteExceptionsToEventLog
taggare in a Produzione ambiente.
NCache fornisce il AddNCacheSession
metodo per inizializzare le configurazioni da file esterni prima di aggiungere i servizi di sessione al contenitore. Utilizzando questo metodo, puoi fare riferimento alle configurazioni fornendo il nome della sezione contenente le configurazioni in formato JSON in Appsettings.json:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
Passaggio 2: aggiungi il middleware all'applicazione
Una volta inizializzati i servizi, è ora possibile configurare la pipeline di richieste HTTPS aggiungendo il middleware nel file Configure
metodo. Di seguito è riportato un estratto che mostra l'aggiunta di uno strato middleware attraverso l'uso del file UseNCacheSession
metodo di estensione in IApplicationBuilder
. NCache il middleware della sessione deve sempre essere impilato prima del livello che utilizza le sessioni.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseNCacheSession(); // store NCache session data
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=myApp}/{action=Index}/{id?}");
});
}
Ora puoi procedere a uso NCache come cache sottostante per il tuo ASP.NET Core Sessioni.
Proprietà di configurazione
Le opzioni di configurazione fornite da NCache sono spiegati di seguito:
Member | Tipologia | Descrizione | Valore di default |
---|---|---|---|
CacheName |
string (Richiesto) |
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. | - |
EmptySessionWhenLocked |
bool (facoltativo) |
Specifica se deve essere restituita una sessione vuota se viene bloccata dopo il file sessionLockingRetry il conteggio è stato superato. |
false |
EnableSessionLocking |
bool (facoltativo) |
Se questo flag è impostato, NCache Session Management blocca esclusivamente l'elemento dell'archivio sessioni per il quale vengono effettuate più richieste simultanee. | false |
EnableLogs |
bool (facoltativo) |
Se questo flag è impostato, NCache registra tutte le informazioni sugli errori. I file di registro vengono creati in %NCHOME%\log-files\SessionState (Windows) o /opt/ncache/log-files/SessionState (Linux). |
false |
EnableDetailLogs |
bool (facoltativo) |
Quando questo flag è impostato, NCache registra tutte le informazioni di debug. I file di registro vengono creati in %NCHOME%\log-files\SessionState (Windows) o /opt/ncache/log-files/SessionState (Linux). |
false |
ExceptionsEnabled |
bool (facoltativo) |
Specifica se le eccezioni dall'API della cache vengono propagate all'output della pagina. L'impostazione di questo flag è particolarmente utile durante la fase di sviluppo dell'applicazione poiché le eccezioni forniscono ulteriori informazioni sulle cause specifiche dell'errore. | false |
OperationRetry |
int (facoltativo) |
Specifica il numero di volte in cui il server ritenterà l'operazione, nel caso in cui venga persa la connessione con un server durante l'esecuzione di un'operazione. | 0 (zero) |
OperationRetryInterval |
int (facoltativo) |
Specifica l'intervallo di tempo tra ogni tentativo di operazione, nel caso in cui la connessione con il server venga interrotta. | 0 (zero) |
ReadOnlyFlag |
string (facoltativo) |
Se specificato in HttpContext.Items prima del middleware della sessione, restituirà una sessione di sola lettura di cui non verrà eseguito il commit. Questa sessione è senza blocchi. |
NCache.AspNetCore.IsReadOnly |
RequestTimeout |
int (facoltativo) |
Specifica l'intervallo di tempo in secondi dopo il quale una sessione verrà sbloccata forzatamente se non è stata rilasciata durante questo intervallo. | 120 |
SessionAppId |
string (facoltativo) |
Specifica un identificatore per garantire che l'ID sessione rimanga univoco nel caso in cui più applicazioni utilizzino la stessa sessione. 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. | - |
SessionLockingRetry |
int (facoltativo) |
If enableSessionLocking è vero e questo numero intero non è inferiore a 0, NCache Il Session Store Provider restituirà una sessione vuota dopo sessionLockingRetry , che specifica il numero di tentativi per acquisire un blocco. |
-1 |
SessionOptions |
SessionOptions |
.NET Core-classe specifica per configurare sessioni come le informazioni sui cookie. Fare riferimento al Documentazione delle API per ulteriori dettagli. | - |
WriteExceptionsToEventLog |
bool (facoltativo) |
Se questo flag è impostato, tutte le eccezioni dall'API della cache vengono scritte nei registri eventi. | false |
usejsonserialization |
bool |
Questo è un attributo booleano. Se desideri utilizzare la serializzazione JSON per il tuo ASP.NET Core Oggetti di sessione, imposta il valore di questo attributo come true . |
false |
Vedere anche
.NETTO: Alachisoft.NCache.Web.SessionStato spazio dei nomi.