无法使用 Servicestack 在 Redis 上设置会话信息
Not able to set session information on Redis with Servicestack
我在 Redis 上设置会话信息时遇到问题。以下是我所做的配置。
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());
下面是我试图获取和设置一些会话信息的代码,但在设置之后,我得到的是旧值。不确定我做错了什么。请提出建议。
//get
var user=SessionAs<CustomUserSession>();
//set
var userSetting=SessionAs<CustomUserSession>();
userSetting.OrganisationId=01;
如果我现在尝试获取用户信息,它将是旧值,而不是最新值。
如果您修改了 Session,它需要用 IRequest.SaveSession()
保存回 ICacheClient
,例如:
var userSession = base.SessionAs<CustomUserSession>();
userSession.OrganisationId = 1;
base.Request.SaveSession(userSession); //Persists userSession to ICacheClient
我在 Redis 上设置会话信息时遇到问题。以下是我所做的配置。
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());
下面是我试图获取和设置一些会话信息的代码,但在设置之后,我得到的是旧值。不确定我做错了什么。请提出建议。
//get
var user=SessionAs<CustomUserSession>();
//set
var userSetting=SessionAs<CustomUserSession>();
userSetting.OrganisationId=01;
如果我现在尝试获取用户信息,它将是旧值,而不是最新值。
如果您修改了 Session,它需要用 IRequest.SaveSession()
保存回 ICacheClient
,例如:
var userSession = base.SessionAs<CustomUserSession>();
userSession.OrganisationId = 1;
base.Request.SaveSession(userSession); //Persists userSession to ICacheClient