ServiceStack - Redis 会话累积

ServiceStack - Redis Sessions Accumulating

在AppHost.cs

container.Register<IRedisClientsManager>(
         c => new PooledRedisClientManager(redisConnectionString));

我没有看到这些会话在 30 秒内得到清理。

public class MyUserSession: AuthUserSession {
  public override void OnAuthenticated(IServiceBase authService, 
          IAuthSession session, IAuthTokens tokens, 
          Dictionary <string, string > authInfo) {
          ...do stuff here
          authService.SaveSession(session, TimeSpan.FromSeconds(30));
  }
}

我是不是在 redis 配置中遗漏了什么或者可能设置错了?此外,如果我第二次登录,它们会开始为同一用户累积。如果当前用户有一个现有会话,我们是否应该使用此方法进行清理?

那只会保存那个时间的会话,如果再次保存会话,如果默认到期,它将被覆盖。

您可以通过覆盖 AppHostBase.OnSaveSession() 来控制每次保存 Session 的时间,例如:

public override void OnSaveSession(
    IRequest httpReq, IAuthSession session, TimeSpan? expiresIn = null)
{
    base.OnSaveSession(session, TimeSpan.FromSeconds(30));
}