Microsoft sta favorendo ASP.NET Core sull'eredità ASP.NET e prevede di fare tutti gli sviluppi futuri nel primo. Ciò significa che ASP.NET sta lentamente diventando obsoleto. Quindi, gli sviluppatori stanno passando ad ASP.NET Core per raccogliere i frutti di tutti gli aggiornamenti e le tecnologie futuri.
Ma gli utenti che utilizzano ASP.NET da anni non possono effettuare questo passaggio in modo così fluido. Passano invece alcune delle loro applicazioni ad ASP.NET Core piuttosto che tutti. Questa configurazione funziona per tutti gli scenari tranne uno, la condivisione della sessione. Ciò significa che gli utenti non possono utilizzare o archiviare sessioni ASP.NET in ASP.NET Core applicazioni e viceversa.
La soluzione è memorizzare nella cache le sessioni in una cache distribuita come NCache e lascia che gestisca la condivisione della sessione tra le tue applicazioni web per te.
NCache Dettagli NCache Documenti ASP.NET NCache ASP.NET Core Docs
Condividi i dati della sessione utilizzando NCache
I dati della sessione non possono essere condivisi tra ASP.NET e ASP.NET Core applicazioni. Questo perché entrambi serializzano i dati della sessione in modo diverso e utilizzano strutture di dati diverse. NCache risolve questi problemi memorizzando i dati della sessione nella cache utilizzando il suo metodo di serializzazione e una struttura dati provvisoria. Quindi, consentendo ai dati di sessione di essere leggibili su ASP.NET e ASP.NET Core applicazioni.
Il processo per configurare la condivisione della sessione utilizzando NCache è anche semplice. Tutto quello che devi fare è scaricare e installare i pacchetti NuGet NCache prevede ASP.NET e ASP.NET Core e apportare alcune modifiche ai file di configurazione. Basta seguire i passaggi seguenti:
NCache Dettagli NCache Documenti di condivisione della sessione Serializzazione compatta dinamica
Installa i pacchetti NuGet per ASP.NET e ASP.NET Core
Il primo passaggio consiste nell'installare i rispettivi pacchetti NuGet che NCache prevede la condivisione della sessione tra ASP.NET e ASP.NET Core applicazioni. NCache fornisce AspNet.SessionState.NCache Pacchetto NuGet per ASP.NET e AspNetCore.Session.NCache Pacchetto NuGet per ASP.NET Core.
Configura l'applicazione ASP.NET
Dopo aver installato il pacchetto NuGet per l'applicazione ASP.NET, è necessario apportare alcune modifiche al file web.config file della tua domanda. Sotto il sessionState
tag, è necessario assicurarsi che il cookieName
ha lo stesso valore sia per ASP.NET che per ASP.NET Core applicazioni.
Sotto il providers
tag, assicurati che sessionAppId
ha lo stesso valore sia per le applicazioni che per il enableSessionSharing
la proprietà ha il valore true
. Se una di queste proprietà manca, assicurati di aggiungerla. Di seguito è stata fornita una configurazione di esempio:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<sessionState ... customProvider="NCacheSessionProvider" cookieName="ASP.NET_CORE_SessionId" <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" enableSessionSharing="true" sessionAppId="NCacheSharedSessionApp" cacheName="myPartitionedCache" ... /> </providers> </sessionState> |
Configura ASP.NET Core Applicazioni
Dopo aver installato il pacchetto NuGet per il tuo ASP.NET Core applicazione, è necessario apportare alcune modifiche al file appsettings.json file della tua domanda. Proprio come per ASP.NET, è necessario assicurarsi che il CookieName
ed SessionAppId
gli attributi hanno lo stesso valore sia per le applicazioni che per il EnableSessionSharing
l'attributo ha il valore true.
Dopo questo, è necessario utilizzare il metodi di estensione fornito da NCache per la condivisione della sessione (spiegato più avanti). Un campione appsettings.json la configurazione del file è fornita di seguito:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
"NCacheSettings": { "CacheName": "demoCache", //Replace "demoCache" with the name of your cache "SessionAppId": "NCacheSharedSessionApp", "EnableSessionLocking": false, "SessionLockingRetry": -1, "EnableLogs": false, "EnableDetailLogs": false, "ExceptionsEnabled": false, "OperationRetry": 0, "operationRetryInterval": 0, "EnableSessionSharing": true, // Default value is false "SessionOptions": { "CookieName": "ASP.NET_CORE_SessionId", // For session sharing the cookie name for the web applications needs to be the same. "CookieDomain": null, "CookiePath": "/", "CookieHttpOnly": "True", "IdleTimeout": "20", "CookieSecure": "None" } } |
NCache Metodi di estensione per la condivisione della sessione
NCache fornisce metodi di estensione per l'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 di scrivere codice per serializzare/deserializzare i dati sul lato client.
Se l'utente desidera abilitare la condivisione della sessione tra ASP.NET Core e le applicazioni ASP.NET, devono utilizzare questi metodi di estensione per archiviare e recuperare i dati della sessione. NCache può solo deserializzare e serializzare oggetti tra l'ASP dell'utente.NET Core e sessioni ASP.NET se utilizzano questi metodi di estensione.
Nell'esempio di codice seguente viene aggiunto un oggetto personalizzato nell'ASP.NET Core sessione utilizzando il Set
metodo fornito dal NCache metodo di estensione per ASP.NET Core.
1 2 3 4 5 |
string key = "ProductID:1001"; Product customObejct = GetProduct(1001); // Add custom object to session with against key HttpContext.Session.Set(key, customObject); |
L'esempio di codice seguente recupera un oggetto personalizzato da un ASP.NET Core sessione utilizzando il TryGetValue
metodo fornito dal NCache metodi di estensione per ASP.NET Core:
1 2 3 4 |
string key = "ProductID:1001"; // Fetch custom object against key it was added against ("ProductID:1001") HttpContext.Session.TryGetValue(key, out customObject); |
NCache Dettagli ASP.NET Core Documenti di memorizzazione nella cache degli oggetti NCache Documenti di condivisione della sessione
Vantaggi dell'utilizzo della condivisione della sessione NCache
Nessun altro fornitore di memorizzazione nella cache o fornisce in altro modo questa funzionalità di condivisione della sessione tra ASP.NET e ASP.NET Core solo applicazioni NCache fornisce questa funzione. Non solo, ma NCache ha inoltre reso la sua configurazione molto semplice e non invasiva.
L'utente deve solo installare i rispettivi pacchetti NuGet, apportare modifiche nei rispettivi file di configurazione (web.config per ASP.NET e appsettings.json per ASP.NET Core), e usa il metodi di estensione fornito da NCache per memorizzare/recuperare le proprie sessioni. Gli utenti di entrambi questi framework Web possono trarre grandi vantaggi da questa funzionalità e condividere i dati della sessione su entrambi i framework senza interruzioni.
Conclusione
Come la condivisione della sessione, NCache fornisce anche molti altri contenuti ricchi, efficienti e facili da configurare e utilizzare Caratteristiche per tutti i suoi utenti. La condivisione della sessione è solo tra le altre funzionalità esclusive di NCache e non esistono da nessun'altra parte sul mercato. Non mi credi? STIMA SMART DI NCache adesso e dai un'occhiata tu stesso!
Ottimo blog! È un contenuto utile per tutti .NET core sviluppatori.
Grazie per la condivisione!