Session 无法使用Servicestack在Redis上设置会话信息
在Redis上设置会话信息时遇到问题。下面是我所做的配置Session 无法使用Servicestack在Redis上设置会话信息,session,redis,servicestack,Session,Redis,servicestack,在Redis上设置会话信息时遇到问题。下面是我所做的配置 appHost.Plugins.Add(new AuthFeature(() => new CustomUserSession(), new IAuthProvider[] { new BasicAuthProvider { SessionExpiry = new TimeSpan(
appHost.Plugins.Add(new AuthFeature(() => new CustomUserSession(),
new IAuthProvider[]
{
new BasicAuthProvider
{
SessionExpiry = new TimeSpan(1000, 0, 0)
},
new CredentialsAuthProvider(appSettings)
{
SessionExpiry = new TimeSpan(1000, 0, 0)
}
}));
container.Register<IRedisClientsManager>(c =>
new PooledRedisClientManager("RedisServer:6379"));
container.Register(c => c.Resolve<IRedisClientsManager>().GetCacheClient());
appHost.Plugins.Add(新建AuthFeature(()=>new CustomUserSession(),
新IAuthProvider[]
{
新BasicAuthProvider
{
SessionExpiry=新的时间跨度(1000,0,0)
},
新的CredentialAuthProvider(应用设置)
{
SessionExpiry=新的时间跨度(1000,0,0)
}
}));
容器。寄存器(c=>
新的PooledRedisClientManager(“RedisServer:6379”);
Register(c=>c.Resolve().GetCacheClient());
下面是我试图获取和设置一些会话信息的代码,但设置之后,我得到的值变旧了。不知道我做错了什么。请建议
//get
var user=SessionAs<CustomUserSession>();
//set
var userSetting=SessionAs<CustomUserSession>();
userSetting.OrganisationId=01;
//获取
var user=SessionAs();
//设置
var userSetting=SessionAs();
userSetting.OrganizationId=01;
如果我现在尝试获取用户信息,它将是一个较旧的值,而不是最新的值。如果您使用
IRequest.SaveSession()
修改会话,它需要保存回ICacheClient
,例如:
var userSession = base.SessionAs<CustomUserSession>();
userSession.OrganisationId = 1;
base.Request.SaveSession(userSession); //Persists userSession to ICacheClient
var userSession=base.SessionAs();
userSession.organizationId=1;
base.Request.SaveSession(userSession)//将用户会话持久化到ICacheClient
Correction:Redis用于客户端缓存,而不是数据库。我觉得初学者应该跳过一件基本的事情:(感谢mythz,它工作得很好。