NuGit安装
Install-Package Microsoft.Extensions.Caching.Redis
在Startup.cs里进行注册 : Redis分布式缓存服务
public void ConfigureServices(IServiceCollection services)
{
//注册session服务
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(3600); //默认 20分钟,会话过期时间 单位秒 3600秒=1小时 (每次会话会重置超时)
options.Cookie.Name = "Ku.Session";//cookie 自定义名称 默认 .AspNetCore.Session
//options.Cookie.HttpOnly = true;//Cookie 是否可通过客户端脚本访问 默认true, false的时候 document.cookie 可以获取到cookie
});
//将Redis分布式缓存服务添加到服务中
services.AddDistributedRedisCache(options =>
{
options.ConfigurationOptions = new StackExchange.Redis.ConfigurationOptions()
{
Password = "123456",//redis 密码
//DefaultDatabase = 6,//默认0,数据库0-15
//ConnectTimeout = 5000,//设置建立连接到Redis服务器的超时时间(以毫秒为单位)(默认值5秒)
//SyncTimeout = 5000,//设置对Redis服务器进行同步操作的超时时间( 以毫秒为单位)(默认值1秒)
//ResponseTimeout = 5000//设置对Redis服务器进行操作的响应超时时间( 以毫秒为单位)(默认为SyncTimeout 1秒)
};
options.ConfigurationOptions.EndPoints.Add("127.0.0.1:6379");//配置redis 服务器
options.InstanceName = "Ku:Session";//Redis实例名称
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//启用session的中间件 必须放在 UseEndpoints 之前调用
app.UseSession();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
在MVC Controller里使用HttpContext.Session
HttpContext.Session.SetString("demo", value);//写入
var value = HttpContext.Session.GetString("demo");//读取
跨站点 共享Session 设置
//分布式 环境下 设置相同的程序识别着
services.AddDataProtection(options =>
{
options.ApplicationDiscriminator = "mysite";
});