无法使用Servicestack在Redis上设置会话信息

时间:2015-06-29 07:35:46

标签: session redis 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;

如果我现在尝试获取用户信息,它将是较旧的值,而不是最新值。

1 个答案:

答案 0 :(得分:2)

如果您修改了会话,则需要使用ICacheClient将其保存回IRequest.SaveSession(),例如:

var userSession = base.SessionAs<CustomUserSession>();
userSession.OrganisationId = 1;

base.Request.SaveSession(userSession); //Persists userSession to ICacheClient