ASP.NET Core Configuración del proveedor de sesión
Para configurar NCache ASP.NET Core Proveedor de sesión, siga los pasos a continuación.
Requisitos previos
- Instale los siguientes paquetes de NuGet en su aplicación en función de su NCache Versión:
- Empresa: AspNetCore.Sesión.NCache.
- Profesionales: AspNetCore.Sesión.NCache.Profesional
- Fuente abierta: AspNetCore.Sesión.NCache.Fuente abierta
- Para utilizar la extensión, incluya los siguientes espacios de nombres en su aplicación en Inicio.cs:
- El caché debe estar ejecutándose.
- Para obtener detalles de la API, consulte: AñadaNCacheSesión.
- Asegúrese de que los datos que se agregan sean serializable.
- Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
- Para manejar cualquier excepción no vista, consulte el Solucionando Problemas .
Paso 1: configurar NCache Servicio de gestión de sesiones
El servicio de gestión de sesiones debe inicializarse en Inicio.cs. Hay dos métodos para especificar configuraciones:
- A través de su aplicación en Inicio.cs or
- En formato JSON en Configuración de aplicaciones.json
Note
La configuración siempre debe contener el nombre de la caché.
Método 1: especificar configuraciones en Startup.cs
Las sesiones pueden ser inicializadas por el AddNCacheSession
método de extensión que toma un IOptions<NCacheSessionConfiguration>
objeto como la configuración.
In Inicio.cs de su aplicación, agregue el siguiente código en el ConfigureServices
método:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container with configured session
services.AddNCacheSession(configuration =>
{
configuration.CacheName = "demoCache";
configuration.EnableLogs = true;
configuration.SessionAppId = "demoApp";
configuration.SessionOptions.IdleTimeout = 5;
configuration.SessionOptions.CookieName = "AspNetCore.Session";
});
}
Método 2: especificar configuraciones en Appsettings.json
Las configuraciones de los servicios también se pueden proporcionar en formato JSON como una sección en Configuración de aplicaciones.json de su aplicación ASP.NET:
{
"NCacheSettings": {
"SessionAppId": "demoApp",
"SessionOptions": {
"CookieName": "AspNetCore.Session",
"CookieDomain": null,
"CookiePath": "/",
"CookieHttpOnly": "True",
"IdleTimeout": "5",
"CookieSecure": "None",
"useJsonSerialization": true,
"WriteExceptionsToEventLog": true,
},
"CacheName": "demoCache",
"EnableLogs": "True",
"RequestTimeout": "90"
},
}
Note
No se recomienda utilizar el WriteExceptionsToEventLog
etiqueta en un Producción ambiente.
NCache proporciona AddNCacheSession
método para inicializar configuraciones desde archivos externos antes de agregar los servicios de sesión al contenedor. Con este método, puede hacer referencia a las configuraciones proporcionando el nombre de la sección que contiene las configuraciones en formato JSON en Configuración de aplicaciones.json:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
Paso 2: agregar middleware a la aplicación
Una vez que se hayan inicializado los servicios, ahora puede configurar la canalización de solicitudes HTTPS agregando middleware en el Configure
método. El siguiente es un extracto que muestra la adición de una capa de middleware mediante el uso de UseNCacheSession
método de extensión en IApplicationBuilder
. NCache el middleware de sesión siempre debe apilarse antes de la capa que utiliza las sesiones.
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?}");
});
}
Ahora puede proceder a utilizan el NCache como caché subyacente para su ASP.NET Core Sesiones
propiedades de configuración
Las opciones de configuración proporcionadas por NCache se explican a continuación:
Titular | Tipo de Propiedad | Descripción | Valor por defecto |
---|---|---|---|
CacheName |
string (requerido) |
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. | - |
EmptySessionWhenLocked |
bool (opcional) |
Especifica si se debe devolver una sesión vacía si está bloqueada después de la sessionLockingRetry se ha excedido el conteo. |
false |
EnableSessionLocking |
bool (opcional) |
Si se establece esta bandera, NCache La gestión de sesiones bloquea exclusivamente el elemento del almacén de sesión para el que se realizan varias solicitudes simultáneas. | false |
EnableLogs |
bool (opcional) |
Si se establece esta bandera, NCache registra toda la información de error. Los archivos de registro se crean en %NCHOME%\log-files\SessionState (Windows) o /opt/ncache/log-files/SessionState (Linux). |
false |
EnableDetailLogs |
bool (opcional) |
Cuando se establece esta bandera, NCache registra toda la información de depuración. Los archivos de registro se crean en %NCHOME%\log-files\SessionState (Windows) o /opt/ncache/log-files/SessionState (Linux). |
false |
ExceptionsEnabled |
bool (opcional) |
Especifica si las excepciones de la API de caché se propagan a la salida de la página. Establecer este indicador 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. | false |
OperationRetry |
int (opcional) |
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. | 0 (cero) |
OperationRetryInterval |
int (opcional) |
Especifica el intervalo de tiempo entre cada reintento de operación, en caso de que se pierda la conexión con el servidor. | 0 (cero) |
ReadOnlyFlag |
string (opcional) |
Si se especifica en HttpContext.Items antes del middleware de sesión, devolverá una sesión de solo lectura que no se confirmará. Esta sesión no tiene bloqueos. |
NCache.AspNetCore.IsReadOnly |
RequestTimeout |
int (opcional) |
Especifica el intervalo de tiempo en segundos después del cual una sesión se desbloqueará a la fuerza si no se ha liberado durante este intervalo. | 120 |
SessionAppId |
string (opcional) |
Especifica un identificador para garantizar que el ID de la sesión siga siendo único en caso de que varias aplicaciones utilicen la misma sesión. El ID de la aplicación debe ser el mismo para una aplicación en una granja de servidores web. Si no se especifica ningún ID de aplicación, no se concatenará nada con el ID de sesión. | - |
SessionLockingRetry |
int (opcional) |
If enableSessionLocking es verdadero y este entero no es menor que 0, 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. |
-1 |
SessionOptions |
SessionOptions |
.NET Core-Clase específica para configurar sesiones como información de cookies. Referirse a Documentación de la API para más información. | - |
WriteExceptionsToEventLog |
bool (opcional) |
Si se establece este indicador, todas las excepciones de la API de caché se escriben en los registros de eventos. | false |
usejsonserialization |
bool |
Este es un atributo booleano. Si desea utilizar la serialización JSON para su ASP.NET Core Objetos de sesión, establezca el valor de este atributo como true . |
false |
Vea también
.NETO: Alachisoft.NCache.Web.SessionState espacio de nombres