Configurare la condivisione della sessione ASP.NET con ASP.NET Core
Con l'avvento dei .NET Core, molte organizzazioni sono passate a questo framework per le sue prestazioni migliorate e il supporto multipiattaforma e open source. Tuttavia, in alcuni casi, il costo del passaggio di un'intera applicazione complessa a un nuovo framework può talvolta superare i vantaggi del framework. Pertanto, è possibile per le aziende mantenere alcuni moduli in ASP.NET mantenendo gli altri in ASP.NET Core.
In tal caso, sorge la necessità di sessioni di condivisione senza soluzione di continuità tra i due framework. Ciò significa che se è stata creata una sessione .NET, ASP.NET Core le app possono leggere e aggiornare la sessione ASP.NET e viceversa. La condivisione delle sessioni consente inoltre un'esperienza Single Sign-On (SSO) per i siti Web che dispongono di più applicazioni back-end in esecuzione in ASP.NET e ASP.NET Core. Inoltre, la condivisione delle sessioni favorisce un basso utilizzo delle risorse e riduce i costi di creazione di nuove sessioni poiché la stessa sessione può essere riutilizzata da più applicazioni.
NCache offre supporto esclusivo per condividere il tuo ASP.NET Core e sessioni ASP.NET con uno sforzo di programmazione trascurabile da parte tua. Consente sia ASP.NET che ASP.NET Core collaborare utilizzando NCache come mezzo di condivisione dei dati con poche modifiche alla configurazione.
Prerequisiti per configurare la condivisione della sessione ASP.NET con ASP.NET Core
- Installa i seguenti pacchetti NuGet nell'applicazione:
- Enterprise: AspNet.SessionState.NCache
- Enterprise: AspNetCore.Session.NCache
- Includere i seguenti spazi dei nomi nell'applicazione:
- La cache deve essere in esecuzione.
- Per i dettagli dell'API fare riferimento a: AggiungiNCacheSessione, ProvaGetValue, Impostato.
- 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 .
Configura ASP.NET Core Sessioni per la condivisione
È possibile specificare le configurazioni per la condivisione della sessione all'interno dell'ASP.NET Core applicazione in Appsettings.json. EnableSessionSharing
deve essere impostato su true
è similare a quella del false
per impostazione predefinita. La nuova sezione di configurazione è denominata NCacheImpostazioni profilo; puoi anche specificare un nome a tua scelta.
Consigli
Garantire quanto segue:
- Il nome del cookie devono obbligatoriamente: essere uguale a quello fornito nella configurazione di ASP.NET. Se desideri utilizzare la serializzazione JSON, imposta il file
useJsonSerialization
contrassegna comeTrue
sia per ASP.NET che per ASP.NET Core.
. . .
"NCacheSettings":
{ . . .
"EnableSessionSharing": true, // Set to true, false by default
"CacheName": "demoCache", // Replace name with name of your cache
"useJsonSerialization": false, // Set this flag as true if you want to use Json serialization
"SessionOptions":
{
"CookieName": "ASP.NET_CORE_SessionId", // Must be same for both .NET Core and .NET
"CookieDomain": null,
"CookiePath": "/",
"CookieHttpOnly": "True",
"IdleTimeout": "20",
"CookieSecure": "None"
}
}
In Avvio.cs della propria applicazione, fare riferimento alle configurazioni specificando il nome della sezione di configurazione (NCacheImpostazioni profilo in questo caso):
public void ConfigureServices(IServiceCollection services)
{
//Add framework services
services.AddMvc();
//Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
Consigli
NCache consente di aggiungere e recuperare oggetti personalizzati con ASP.NET Core sessioni, eliminando la necessità di serializzare e deserializzare gli oggetti sul lato client. Quindi, devi usare NCache metodi di estensione durante l'utilizzo di ASP.NET Core sessioni.
Configura sessioni ASP.NET per la condivisione
Per abilitare la condivisione della sessione nell'applicazione ASP.NET, aggiungi la configurazione seguente in formato XML in web.config della tua domanda. Il enableSessionSharing
il tag deve essere impostato su true
è similare a quella del false
per impostazione predefinita.
Consigli
Il nome del cookie devono obbligatoriamente: essere lo stesso previsto nell'ASP.NET Core configurazione. Inoltre, se si desidera utilizzare la serializzazione Json, impostare il useJsonSerialization
proprietà come true
.
<sessionState ...
customProvider="NCacheSessionProvider"
cookieName="ASP.NET_CORE_SessionId">
<providers>
<add name="NCacheSessionProvider"
type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"
useJsonSerialization = "false"
enableSessionSharing="true"
sessionAppId="NCacheSharedSessionApp"
cacheName="demoCache"
... />
</providers>
</sessionState>
Usa oggetti personalizzati in ASP.NET Core Sessioni
L'ASP predefinito.NET Core l'interfaccia di sessione supporta l'aggiunta/il recupero dei dati della sessione come byte con una chiave di stringa. Esistono alcune soluzioni per fornire supporto di tipo primitivo per aggiungere/recuperare dati di tipo primitivo dalle sessioni. Tuttavia, è ancora necessario serializzare/deserializzare i dati in un byte durante la gestione degli oggetti personalizzati. NCache fornisce metodi di estensione sull'ASP.NET Core interfaccia di sessione che supporta l'aggiunta e il recupero di oggetti personalizzati e gestisce automaticamente la serializzazione/deserializzazione degli oggetti per te. Ciò elimina la necessità di utilizzare convertitori binari/JSON o scrivere codice per serializzare/deserializzare i dati sul lato client.
Se hai abilitato la condivisione delle sessioni tra le tue applicazioni, devi utilizzare i metodi di estensione forniti da NCache per l'ASP.NET Core interfaccia. Questi metodi sono spiegati di seguito:
Consigli
Quando si utilizza la condivisione della sessione, è necessario utilizzare NCache metodi di estensione con ASP.NET Core per aggiungere e recuperare oggetti personalizzati.
Aggiungi oggetto personalizzato ad ASP.NET Core Sessione
È possibile aggiungere un oggetto personalizzato alla sessione utilizzando il file NCache estensione per l'ASP.NET Core interfaccia di sessione Set()
metodo.
string key = "ProductID:1001";
Product customObejct = GetProduct(1001);
// Add custom object to session with against key
HttpContext.Session.Set(key, customObject);
Recupera oggetto personalizzato da ASP.NET Core Sessione
È possibile recuperare un oggetto personalizzato dalla sessione utilizzando NCache estensione per l'ASP.NET Core interfaccia di sessione TryGetValue()
metodo.
string key = "ProductID:1001";
// Fetch custom object against key it was added against ("ProductID:1001")
HttpContext.Session.TryGetValue(key, out customObject);
if(customObject != null)
{
// Use custom object
}
Vedere anche
.NETTO: Alachisoft.NCache.Web.SessionStato spazio dei nomi.