ASP.NET Core 会话提供者配置
配置 NCache ASP.NET Core Session Provider for Session Management Service by modifying the 应用设置.json and then adding middleware to the application as necessary.
先决条件
- Install the following NuGet packages in your application To configure ASP.NET Core session provider, based on your NCache 版本:
- 要使用该扩展,请在您的应用程序中包含以下命名空间 启动文件:
- 缓存必须正在运行。
- 有关 API 详细信息,请参阅: 地址NCache时间.
- 确保要添加的数据是 可序列化.
- 为确保操作是故障安全的,建议处理应用程序中的任何潜在异常,如中所述 处理故障.
- 要处理任何看不见的异常,请参阅 故障排除 部分。
步骤1:设定 NCache 会话管理服务
会话管理服务需要在 启动文件. 有两种方法可以指定配置:
- 通过您的申请 启动文件 or
- 在 JSON 格式中 应用设置.json
备注
配置必须始终包含缓存名称。
方法一:在 Startup.cs 中指定配置
会话可以通过以下方式初始化 AddNCacheSession
扩展方法需要一个 IOptions<NCacheSessionConfiguration>
对象作为配置。
In 启动文件 在您的应用程序中,添加以下代码 ConfigureServices
方法:
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";
});
}
方法二:在 Appsettings.json 中指定配置
服务的配置也可以以 JSON 格式作为以下部分提供: 应用设置.json 您的 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"
},
}
备注
不建议使用 WriteExceptionsToEventLog
标签在一个 生产 环境。
NCache 提供 AddNCacheSession
在将会话服务添加到容器之前从外部文件初始化配置的方法。 使用此方法,您可以通过在中提供包含 JSON 格式配置的部分的名称来引用配置 应用设置.json:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
// Add services to the container
services.AddNCacheSession(Configuration.GetSection("NCacheSettings"));
}
第 2 步:将中间件添加到应用程序
服务初始化后,您现在可以通过在中添加中间件来配置 HTTPS 请求管道 Configure
方法。 以下是显示通过使用添加中间件层的摘录 UseNCacheSession
扩展方法在 IApplicationBuilder
。 该 NCache 会话中间件应始终堆叠在使用会话的层之前。
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?}");
});
}
您现在可以继续 使用 NCache 作为底层缓存 为您的 ASP.NET Core 会议。
配置属性
提供的配置选项 NCache 解释如下:
委员 | Type | 产品描述 | 默认值 |
---|---|---|---|
CacheName |
string (必填) |
指定用于缓存会话的缓存名称。 如果没有指定缓存名称,将会抛出配置异常。 | - |
EmptySessionWhenLocked |
bool (可选) |
指定如果会话在锁定后是否应返回空会话 sessionLockingRetry 已超出计数。 |
false |
EnableSessionLocking |
bool (可选) |
如果设置了这个标志, NCache 会话管理专门锁定对其进行多个并发请求的会话存储项。 | false |
EnableLogs |
bool (可选) |
如果设置了这个标志, NCache 记录所有错误信息。 日志文件创建于 %NCHOME%\log-files\SessionState (Windows)或 /opt/ncache/log-files/SessionState (Linux)。 |
false |
EnableDetailLogs |
bool (可选) |
设置此标志时, NCache 记录所有调试信息。 日志文件创建于 %NCHOME%\log-files\SessionState (Windows)或 /opt/ncache/log-files/SessionState (Linux)。 |
false |
ExceptionsEnabled |
bool (可选) |
指定是否将缓存 API 的异常传播到页面输出。 设置此标志在应用程序的开发阶段特别有用,因为异常提供了有关失败的具体原因的更多信息。 | false |
OperationRetry |
int (可选) |
指定在执行操作时与服务器的连接丢失时服务器重试操作的次数。 | 0(零) |
OperationRetryInterval |
int (可选) |
指定每次操作重试之间的时间间隔,以防与服务器的连接丢失。 | 0(零) |
ReadOnlyFlag |
string (可选) |
如果指定在 HttpContext.Items 在会话中间件之前,它将返回一个不会被提交的只读会话。 此会话是无锁的。 |
NCache.AspNetCore.IsReadOnly |
RequestTimeout |
int (可选) |
指定时间间隔(以秒为单位),如果在此时间间隔内没有释放会话,则在该时间间隔之后会话将被强制解锁。 | 120 |
SessionAppId |
string (可选) |
指定一个标识符,以确保会话 ID 在多个应用程序使用同一会话时保持唯一。 应用程序 ID 应与网络场中的应用程序相同。 如果未指定应用程序 ID,则不会将任何内容与会话 ID 连接。 | - |
SessionLockingRetry |
int (可选) |
If enableSessionLocking 为真且该整数不小于0, NCache Session Store Provider 之后会返回一个空会话 sessionLockingRetry ,它指定获取锁的重试次数。 |
-1 |
SessionOptions |
SessionOptions |
.NET Core- 用于配置会话(如 cookie 信息)的特定类。 请参阅 API文档 以获得更多细节。 | - |
WriteExceptionsToEventLog |
bool (可选) |
如果设置了此标志,缓存 API 中的所有异常都将写入事件日志。 | false |
usejsonserialization |
bool |
这是一个布尔属性。 如果你想为你的 ASP 使用 JSON 序列化.NET Core Session对象,设置该属性的值为 true . |
false |
参见
.NET: Alachisoft.NCache.Web.会话状态 命名空间。