ASP multiregione.NET Core Fornitore di sessioni
NCache fornisce ASP.NET Core session-sharing support across multiple regions. This prevents users from losing their sessions in case they need to reroute their traffic to another location because of traffic or due to disaster recovery. Sessions are replicated across WAN seamlessly without replicating the entire session which may result in bandwidth expense.
Figura 1: Condivisione delle sessioni tra i data center
To share ASP.NET Core session across regions, you need to enable location affinity. This is enabled by setting the EnableLocationAffinity flag to true and providing the cache names and prefixes to identify the source (location) of the cache for the request. You can provide multiple cache names that form the web farm, however, the cache specified against CacheName is considered the primary cache by default.
Prerequisites to Configure Multi-Region ASP.NET Core Fornitore di sessioni
- 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, Usa il NCacheSessione.
- 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: configurare i servizi
È necessario inizializzare il servizio di gestione della sessione. In Avvio.cs, Usa il AddNCacheSession()
metodo di estensione attivato IServiceCollection
in ConfigureServices()
per inizializzare il servizio. L'overload di base di questo metodo di estensione richiede un IOptions<NCacheSessionConfiguration>
come sua configurazione di base.
Esistono due metodi per specificare le configurazioni:
- Attraverso la tua applicazione Startup.cs o
- In formato JSON in Appsettings.json .
Metodo 1: specifica delle configurazioni in Startup.cs
Per abilitare la condivisione della sessione, è necessario impostare il file EnableLocationAffinity
contrassegnare su true e fornire l'elenco delle cache in AffinityMapping
. Tieni presente che una delle cache deve corrispondere a CacheName, che è considerata la cache primaria. È inoltre necessario specificare una directory condivisa da entrambe le applicazioni.
Note:
Il prefisso della cache deve contenere al massimo 4 caratteri.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(dir))
.SetApplicationName("SharedCookieApp");
services.AddNCacheSession(configuration =>
{
configuration.CacheName = "LondonCache"; //compulsory
configuration.EnableLogs = true;
configuration.SessionOptions.IdleTimeout = 5;
configuration.EnableLocationAffinity = true;
configuration.AffinityMapping = new CacheAffinity[]
{
new CacheAffinity { CacheName = "LondonCache", CachePrefix = "LDNC"},
new CacheAffinity { CacheName = "NewYorkCache", CachePrefix = "NYKC"},
new CacheAffinity { CacheName = "TokyoCache", CachePrefix = "TKYC"},
};
});
}
Metodo 2: specifica delle configurazioni in Appsettings.json
È necessario inizializzare il servizio di gestione della sessione. In Avvio.cs, Usa il AddNCacheSession()
metodo di estensione attivato IServiceCollection
in ConfigureServices()
per inizializzare il servizio. L'overload di base di questo metodo di estensione richiede un IOptions<NCacheSessionConfiguration>
come sua configurazione di base.
Note:
Il prefisso della cache deve contenere al massimo 4 caratteri.
"NCacheSettings": {
"EnableLocationAffinity": true,
"EnableLogs": true,
"RequestTimeout": 5,
"CacheName": "LondonCache",
"AffinityMapping": [
{
"CacheName": "LondonCache",
"CachePrefix": "LDNC"
},
{
"CacheName": "NewYorkCache",
"CachePrefix": "NYKC"
},
{
"CacheName": "TokyoCache",
"CachePrefix": "TKYC"
}
]
}
public void ConfigureServices(IServiceCollection services)
{
//Add framework services
services.AddMvc();
//Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
Passaggio 2: aggiungere il middleware all'applicazione
Una volta inizializzati i servizi, è possibile configurare la pipeline delle richieste HTTP 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.
Risorse addizionali
NCache fornisce un'applicazione di esempio per la memorizzazione nella cache della sessione GitHub.
- Spedito con NCache: %NCHOME%\samples\dotnetcore\SessionCaching
Vedere anche
.NETTO: Alachisoft.NCache.Web.SessionStato spazio dei nomi.