Propiedades del proveedor de estado de sesión de ASP.NET
Note
Esta característica también está disponible en NCache Professional.
Almacenamiento de sesiones ASP.NET en NCache no requiere programación. NCache El proveedor de estado de sesión es una costumbre SessionStateStoreProviderBase
Implementación para una aplicación ASP.NET. Para configurar y recuperar sesiones ASP.NET en su aplicación, se requieren las siguientes modificaciones:
Requisitos previos
- Instale los siguientes paquetes de NuGet en su aplicación en función de su NCache Versión:
- Empresa: AspNet.SessionState.NCache
- Profesionales: AspNet.SessionState.NCache.Profesional
- Fuente abierta: AspNet.SessionState.NCache.Fuente abierta
- El caché debe estar ejecutándose.
Modificar la etiqueta sessionState
Edite su aplicación web.config archivar y modificar el <sessionState>
sección como se indica a continuación.
<configuration>
...
<sessionState cookieless="false"
regenerateExpiredSessionId="true"
mode="Custom"
customProvider="NCacheSessionProvider"
timeout="20">
<providers>
<add name="NCacheSessionProvider"
type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"
cacheName="demoCache"
sessionAppId="demoApp"
useInProc="false"
enableLogs="false"
exceptionsEnabled="true"
writeExceptionsToEventLog="false"
AsyncSession="false"
useJsonSerialization="false"
enableLogs="false"
enableSessionLocking="true"
sessionLockingRetry="-1"
emptySessionWhenLocked="false" />
</providers>
</sessionState>
...
</configuration>
Modifique la etiqueta MachineKey para Web Farms
En el caso de granjas web, agregue el <machineKey>
entrada bajo <system.web>
sección. Es necesario generar ID de sesión de ASP.NET de la misma manera en todos los nodos.
Obtenga información sobre cómo generar una clave de máquina para una granja web:
Generar una clave de máquina para una granja web (IIS 7)
<machineKey validationKey ="A01D6E0D1A5D2A22E0854CA612FE5C5EC4AECF24"
decryptionKey ="ACD8EBF87C4C8937" validation ="SHA1"/>
Serializar objetos de sesión
Antes de comenzar a usar NCache Para almacenar y recuperar sus objetos de sesión ASP.NET, necesita saber que no puede almacenar estos objetos directamente dentro del caché. Para almacenar estos objetos de sesión dentro del caché, primero debe serializarlos. Existen diferentes métodos que puede adoptar para serializar sus objetos de sesión. Estos métodos son los siguientes:
Serialización binaria
Puede utilizar este método de serialización si tiene acceso al código fuente de la aplicación. En este caso, debes marcar todos los objetos (los que deseas almacenar dentro del caché) como serializables.
Note
Sin embargo, este método está obsoleto a partir de .NET 6.0 y si usa la serialización binaria o la serialización compacta dentro de cualquier aplicación ASP.NET, generarán una excepción que informará a los usuarios en consecuencia.
NCache Serialización compacta
Si no puede o no quiere usar la serialización binaria, puede usar NCache Serialización compacta para serializar sus objetos de sesión. Es más rápido y sólo requiere modificar sus archivos de configuración en lugar de modificar el código fuente.
El único problema con este método es que el cambio de configuración puede ser grande si la cantidad de clases que desea serializar es grande.
Serialización JSON
Si alguna de las técnicas de serialización mencionadas anteriormente no funciona, entonces puede optar por la serialización JSON. La mejor parte de este método es que es súper rápido y simple, ya que solo requiere que hagas un único cambio en tu web.config archivo y el resto del trabajo lo realiza NCache automáticamente en tiempo de ejecución.
Solo tienes que establecer el valor de la usejsonserialization
marcar como Verdadero. De forma predeterminada, el valor de esta bandera es Falso.
Obtener datos de sesión
NCache permite ver todos los datos de la sesión almacenados en un caché agrupado a través del NCache Módulo de estado de sesión. Todos los datos de la sesión se agregan en el caché especificado como un elemento de caché etiquetado con Etiqueta: NC_ASP.net_session_data
.
Para recuperar datos de sesión previamente almacenados, los datos se pueden recuperar mediante GetByTag
API, que devuelve un diccionario con ID de sesión y datos de sesión asociados almacenados en la memoria caché.
var allSessionData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_session_data"));
Propiedades de estado de sesión
A continuación se muestra la descripción de los diferentes pares clave-valor especificados anteriormente:
Titular | Descripción |
---|---|
sessionAppId |
Es opcional string atributo que especifica un identificador para garantizar que el ID de sesión siga siendo único en caso de que varias aplicaciones utilicen la misma caché. El ID de la aplicación debe ser el mismo para una aplicación en una granja web. Si no se especifica ningún ID de aplicación, no se concatenará nada con el ID de sesión. |
cacheName |
Este es un requisito String atributo que especifica el nombre de la caché que se utilizará para la sesión de almacenamiento en caché. Si no se especifica ningún nombre de caché, se generará una excepción de configuración. |
enableSessionLocking |
Un opcional Boolean atributo. Si se establece esta bandera, el NCache El proveedor de almacén de sesiones bloquea exclusivamente el elemento del almacén de sesiones para el que se realizan varias solicitudes simultáneas. El valor predeterminado es falso. |
sessionLockingRetry |
Esta es una opción Integer atributo. Si enableSessionLocking es Verdadero y este número entero no es menor que 0, el NCache El proveedor del almacén de sesiones devolverá una sesión vacía después de sessionLockingRetry , que especifica el número de reintentos para adquirir un bloqueo. El valor predeterminado es -1. |
writeExceptionsToEventLog |
Un opcional Boolean atributo. Si se establece este indicador, todas las excepciones de la API de caché se escriben en los registros de eventos. El valor predeterminado es falso. |
enableLogs |
Es opcional Boolean atributo. Cuando se establece este indicador, el proveedor de la tienda registra toda la información de error. Los archivos de registro se crean en %NCHOME%\log-files\SessionStoreProvider (Windows) o /opt/ncache/log-files/SessionStoreProvider (Linux). El valor predeterminado es falso. |
enableDetailLogs |
Un opcional Boolean atributo. Cuando se establece este indicador, el proveedor de la tienda registra toda la información de depuración. Los archivos de registro se crean en %NCHOME%\log-files\SessionStoreProvider (Windows) o /opt/ncache/log-files/SessionStoreProvider (Linux). El valor predeterminado es falso. |
exceptionsEnabled |
Esta es una opción Boolean atributo que especifica si las excepciones de la API de caché se propagan a la salida de la página. Establecer este indicador en Verdadero es especialmente útil durante la fase de desarrollo de la aplicación, ya que las excepciones brindan más información sobre las causas específicas del error. El valor predeterminado es falso. |
operationRetry |
Especifica la cantidad de veces que el servidor reintentará la operación, en caso de que se pierda una conexión con un servidor mientras se ejecuta una operación. Su valor predeterminado es 0 (cero). |
operationRetryInterval |
Especifica el intervalo de tiempo entre cada reintento de operación, en caso de que se pierda la conexión con el servidor. Su valor predeterminado es 0 (cero). |
usejsonserialization |
Este es un atributo booleano. Si desea utilizar la serialización JSON para sus objetos de sesión ASP.NET, establezca el valor de este atributo en Verdadero. De forma predeterminada, el valor de este atributo es Falso. |
Vea también
.NETO: Alachisoft.NCache.Web.SessionState espacio de nombres