一、nuget添加程序包Microsoft.AspNetCore.Session;
二、在appsettings.json中添加Redis配置;
"WebConfig": {
"Redis": {
//"Connection": "127.0.0.1:6379,defaultdatabase=1",
"Connection": "127.0.0.1:6379,allowAdmin=true,password=123,defaultdatabase=1",
"InstanceName": "Core_Redis_Session_"
},
"SessionTimeOut": "30" //session过期时长,分钟
}
三、 在startup.cs类
1、在方法ConfigureServices添加:
#region 使用Redis保存Session
var redisConn = Configuration["WebConfig:Redis:Connection"];
var redisInstanceName = Configuration["WebConfig:Redis:InstanceName"];
//Session 过期时长分钟
var sessionOutTime = Configuration.GetValue<int>("WebConfig:SessionTimeOut", 30);
//var redis = StackExchange.Redis.ConnectionMultiplexer.Connect(redisConn);
//services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Test-Keys");
services.AddDistributedRedisCache(option =>
{
//redis 连接字符串
option.Configuration = redisConn;
//redis 实例名
option.InstanceName = redisInstanceName;
}
);
#endregion
//添加Session并设置过期时长
services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(sessionOutTime); });
2、在方法Configure添加,注意如果出现“Session has not been configured for this application or request”,那么可能是 app.UseSession()位置放的太后面了,往方法开始位置移。
app.UseSession();//Redis缓存
四、在Services注入:
private readonly IDistributedCache _redisCache;
public testService(IDistributedCache redisCache)
{
_redisCache = redisCache;
}
五、Service类使用:
_redisCache.GetString("key");
_redisCache.SetString("key", "value");
六、本文参考了这篇文章: