ASP.NET Core Configuração do provedor de sessão
Para configurar NCache ASP.NET Core Provedor de Sessão, siga as etapas abaixo.
Pré-requisitos
- Instale os seguintes pacotes NuGet em seu aplicativo com base em seu NCache versão:
- Empresa: AspNetCore.Session.NCache.
- Profissional: AspNetCore.Session.NCache.Profissional
- Código aberto: AspNetCore.Session.NCache.Código aberto
- Para utilizar a extensão, inclua os seguintes namespaces em seu aplicativo em Inicialização.cs:
- O cache deve estar em execução.
- Para obter detalhes da API, consulte: AdicionarNCacheNúmero da.
- Certifique-se de que os dados que estão sendo adicionados serializável.
- Para garantir que a operação seja à prova de falhas, é recomendável lidar com possíveis exceções em seu aplicativo, conforme explicado em Como lidar com falhas.
- Para lidar com quaisquer exceções não vistas, consulte o guia de solução de problemas seção.
Etapa 1: configurar NCache Serviço de gerenciamento de sessão
O serviço de gerenciamento de sessão precisa ser inicializado em Inicialização.cs. Existem dois métodos para especificar configurações:
- Através de sua aplicação em Inicialização.cs or
- No formato JSON em Appsettings.json
Note
A configuração deve sempre conter o nome do cache.
Método 1: especificando configurações em Startup.cs
As sessões podem ser inicializadas pelo AddNCacheSession
método de extensão que leva um IOptions<NCacheSessionConfiguration>
objeto como a configuração.
In Inicialização.cs da sua aplicação, adicione o seguinte código no arquivo 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: especificando configurações em Appsettings.json
As configurações dos serviços também podem ser fornecidas no formato JSON como uma seção em Appsettings.json do seu aplicativo 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
Não é recomendável usar o WriteExceptionsToEventLog
marcar em um Produção ambiente.
NCache fornece o AddNCacheSession
método para inicializar as configurações de arquivos externos antes de adicionar os serviços de sessão ao contêiner. Usando esse método, você pode consultar as configurações fornecendo o nome da seção que contém as configurações do formato JSON em Appsettings.json:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
Etapa 2: adicionar middleware ao aplicativo
Depois que os serviços forem inicializados, você poderá configurar o pipeline de solicitação HTTPS adicionando middleware no arquivo Configure
método. A seguir está um trecho que mostra a adição de uma camada de middleware através do uso do UseNCacheSession
método de extensão em IApplicationBuilder
. O NCache O middleware de sessão deve sempre ser empilhado antes da camada que utiliza as sessões.
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?}");
});
}
Agora você pode prosseguir para usar NCache como o cache subjacente para o seu ASP.NET Core Sessões.
Propriedades de configuração
As opções de configuração fornecidas por NCache são explicados abaixo:
Vogal | Formato | Descrição | Valor padrão |
---|---|---|---|
CacheName |
string (requerido) |
Especifica o nome do cache a ser usado para a sessão de cache. Se nenhum nome de cache for especificado, uma exceção de configuração será lançada. | - |
EmptySessionWhenLocked |
bool (Opcional) |
Especifica se uma sessão vazia deve ser retornada se for bloqueada após o sessionLockingRetry a contagem foi excedida. |
false |
EnableSessionLocking |
bool (Opcional) |
Se este sinalizador estiver definido, NCache O Gerenciamento de Sessão bloqueia exclusivamente o item de armazenamento de sessão para o qual são feitas várias solicitações simultâneas. | false |
EnableLogs |
bool (Opcional) |
Se este sinalizador estiver definido, NCache registra todas as informações de erro. Os arquivos de log são criados em %NCHOME%\log-files\SessionState (Windows) ou /opt/ncache/log-files/SessionState (Linux). |
false |
EnableDetailLogs |
bool (Opcional) |
Quando este sinalizador é definido, NCache registra todas as informações de depuração. Os arquivos de log são criados em %NCHOME%\log-files\SessionState (Windows) ou /opt/ncache/log-files/SessionState (Linux). |
false |
ExceptionsEnabled |
bool (Opcional) |
Especifica se as exceções da API de cache são propagadas para a saída da página. Definir esse sinalizador é especialmente útil durante a fase de desenvolvimento do aplicativo, pois as exceções fornecem mais informações sobre as causas específicas da falha. | false |
OperationRetry |
int (Opcional) |
Especifica o número de vezes que o servidor tentará novamente a operação, caso uma conexão seja perdida com um servidor durante a execução de uma operação. | 0 (zero) |
OperationRetryInterval |
int (Opcional) |
Especifica o intervalo de tempo entre cada nova tentativa de operação, caso a conexão seja perdida com o servidor. | 0 (zero) |
ReadOnlyFlag |
string (Opcional) |
Se especificado em HttpContext.Items antes do middleware de sessão, ele retornará uma sessão somente leitura que não será confirmada. Esta sessão é livre de bloqueios. |
NCache.AspNetCore.IsReadOnly |
RequestTimeout |
int (Opcional) |
Especifica o intervalo de tempo em segundos após o qual uma sessão será desbloqueada à força se não tiver sido liberada durante esse intervalo. | 120 |
SessionAppId |
string (Opcional) |
Especifica um identificador para garantir que o ID da sessão permaneça exclusivo caso vários aplicativos estejam usando a mesma sessão. O ID do aplicativo deve ser o mesmo de um aplicativo em um web farm. Se nenhum ID do aplicativo for especificado, nada será concatenado ao ID da sessão. | - |
SessionLockingRetry |
int (Opcional) |
If enableSessionLocking é verdadeiro e esse número inteiro não é menor que 0, NCache O provedor de armazenamento de sessão retornará uma sessão vazia após sessionLockingRetry , que especifica o número de tentativas para adquirir um bloqueio. |
-1 |
SessionOptions |
SessionOptions |
.NET Core-classe específica para configurar sessões como informações de cookies. Consulte o Documentação da API para mais detalhes. | - |
WriteExceptionsToEventLog |
bool (Opcional) |
Se esse sinalizador for definido, todas as exceções da API de cache serão gravadas nos logs de eventos. | false |
usejsonserialization |
bool |
Este é um atributo booleano. Se você quiser usar a serialização JSON para seu ASP.NET Core Objetos de sessão, defina o valor deste atributo como true . |
false |
Veja também
.INTERNET: Alachisoft.NCache.Web.SessionState espaço para nome.