servicestack,Session,Redis,servicestack" /> servicestack,Session,Redis,servicestack" />

Session 无法使用Servicestack在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(

在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());
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,它工作得很好。