Microsoft está favoreciendo ASP.NET Core sobre el legado ASP.NET y planes para hacer todos los desarrollos futuros en el primero. Es decir, ASP.NET se está volviendo obsoleto lentamente. Por lo tanto, los desarrolladores están cambiando a ASP.NET Core para cosechar los beneficios de todas las futuras actualizaciones y tecnologías.
Pero los usuarios que han estado usando ASP.NET durante años no pueden hacer este cambio tan fácilmente. En su lugar, cambian algunas de sus aplicaciones a ASP.NET Core en lugar de todos ellos. Esta configuración funciona para todos los escenarios excepto uno, compartir sesión. Es decir, los usuarios no pueden usar ni almacenar sesiones de ASP.NET en ASP.NET Core aplicaciones y viceversa.
La solución es almacenar en caché las sesiones en un caché distribuido como NCache y deje que maneje sesiones compartidas entre sus aplicaciones web por usted.
NCache Detalles NCache Documentos de ASP.NET NCache ASP.NET Core Docs
Compartir datos de sesión usando NCache
Los datos de sesión no se pueden compartir entre ASP.NET y ASP.NET Core aplicaciones Esto se debe a que ambos serializan sus datos de sesión de manera diferente y usan estructuras de datos diferentes. NCache supera estos problemas al almacenar datos de sesión en el caché usando su método de serialización y una estructura de datos provisional. Por lo tanto, permitir que los datos de la sesión sean legibles en ASP.NET y ASP.NET Core aplicaciones.
El proceso para configurar el uso compartido de sesiones usando NCache también es sencillo. Todo lo que tiene que hacer es descargar e instalar los paquetes NuGet NCache proporciona para ASP.NET y ASP.NET Core y hacer algunos cambios en los archivos de configuración. Simplemente siga los pasos a continuación:
NCache Detalles NCache Sesión de documentos compartidos Serialización compacta dinámica
Instalar paquetes NuGet para ASP.NET y ASP.NET Core
El primer paso es instalar los respectivos paquetes NuGet que NCache proporciona sesiones compartidas entre ASP.NET y ASP.NET Core aplicaciones. NCache proporciona AspNet.SessionState.NCache Paquete NuGet para ASP.NET y AspNetCore.Session.NCache Paquete NuGet para ASP.NET Core.
Configurar la aplicación ASP.NET
Una vez que haya instalado el paquete NuGet para su aplicación ASP.NET, debe realizar algunos cambios en el web.config expediente de su solicitud. Bajo la sessionState
etiqueta, debe asegurarse de que la cookieName
la propiedad tiene el mismo valor para ASP.NET y ASP.NET Core aplicaciones.
Bajo la providers
etiqueta, asegúrese de que sessionAppId
tiene el mismo valor para ambas aplicaciones y el enableSessionSharing
propiedad tiene el valor true
. Si falta alguna de estas propiedades, asegúrese de agregarlas. A continuación se proporciona una configuración de muestra:
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> |
Configurar ASP.NET Core Aplicación
Una vez que haya instalado el paquete NuGet para su ASP.NET Core aplicación, debe realizar algunos cambios en la configuración de aplicaciones.json expediente de su solicitud. Al igual que con ASP.NET, debe asegurarse de que el CookieName
y SessionAppId
Los atributos tienen el mismo valor para ambas aplicaciones y el EnableSessionSharing
atributo tiene el valor verdadero.
Después de esto, debe utilizar el métodos de extensión proporcionada por NCache para compartir sesiones (explicado más adelante). Una muestra configuración de aplicaciones.json la configuración del archivo se proporciona a continuación:
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 Métodos de extensión para compartir sesiones
NCache proporciona un métodos de extensión para la ASP.NET Core interfaz de sesión que admite agregar y obtener objetos personalizados y maneja automáticamente la serialización/deserialización de objetos por usted. Esto elimina la necesidad de usar convertidores binarios/JSON o escribir código para serializar/deserializar datos en el extremo del cliente.
Si el usuario desea habilitar el uso compartido de sesiones entre ASP.NET Core y aplicaciones ASP.NET, deben usar estos métodos de extensión para almacenar y recuperar sus datos de sesión. NCache solo puede deserializar y serializar objetos entre la ASP del usuario.NET Core y sesiones ASP.NET si utilizan estos métodos de extensión.
El siguiente ejemplo de código agrega un objeto personalizado en el ASP.NET Core sesión usando el Set
método proporcionado por el NCache método de extensión para 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); |
El siguiente ejemplo de código obtiene un objeto personalizado de un ASP.NET Core sesión usando el TryGetValue
método proporcionado por el NCache métodos de extensión para 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 Detalles ASP.NET Core Documentos de almacenamiento en caché de objetos NCache Sesión de documentos compartidos
Beneficios de compartir sesiones usando NCache
Ningún otro proveedor de almacenamiento en caché proporciona esta función de uso compartido de sesiones entre ASP.NET y ASP..NET Core aplicaciones, solo NCache proporciona esta función. No solamente eso, pero NCache también ha hecho que su configuración sea muy simple y no invasiva.
El usuario solo tiene que instalar los respectivos paquetes de NuGet, hacer cambios en los respectivos archivos de configuración (web.config para ASP.NET y configuración de aplicaciones.json para ASP.NET Core), y use el métodos de extensión proporcionada por NCache para almacenar/recuperar sus sesiones. Los usuarios de estos dos marcos web pueden beneficiarse enormemente de esta función y compartir sus datos de sesión en ambos marcos sin problemas.
Conclusión
Me gusta compartir sesión, NCache también proporciona muchos otros recursos completos, eficientes y fáciles de configurar y usar Características para todos sus usuarios. El uso compartido de sesiones es solo una de las otras características que son exclusivas de NCache y no existen en ningún otro lugar en el mercado. ¿No me crees? Intente NCache ahora ¡y compruébalo tú mismo!
¡Gran blog! Es contenido útil para todos. .NET core desarrolladores.
Gracias por compartir!