2

我在服务堆栈中启用了会话支持,例如:

container.Register<IRedisClientsManager>(c => container.Resolve<PooledRedisClientManager>());
container.Register<ICacheClient>(c => c.Resolve<IRedisClientsManager>().GetCacheClient());
container.Register<ISessionFactory>(c => new SessionFactory(c.Resolve<ICacheClient>()));

//RE: https://github.com/ServiceStack/ServiceStack/wiki/Sessions
Plugins.Add(new SessionFeature());         

我看到在访问该站点时设置了 ss-id 和 ss-pidd cookie,但是我想知道会话何时开始(即来自该用户的第一个请求),以便我可以捕获传入的引荐来源网址。

使用传统的 asp.net 会话,我会在 Global 中使用 Session_Start,但是在使用 SS 会话时这不会触发我。

使用 ServiceStack 时是否有一种检测此会话启动事件的好方法?我没有在我的在线查询或ServiceStack Sessions wiki上找到任何参考资料。

4

1 回答 1

2

ServiceStack 的 Sessions 功能中目前没有“Session Started”事件,但IAuthSession上有一些事件可能有用,例如:

public interface IAuthSession
{
    ...
    void OnRegistered(IServiceBase registrationService);
    void OnLogout(IServiceBase authService);
    void OnAuthenticated(IServiceBase authService, IAuthSession session, 
         IOAuthTokens tokens, Dictionary<string, string> authInfo);
}

如果您仍然希望看到 OnSessionStarted 事件请求它作为ServiceStack 的 GitHub 问题中的一项功能(并包括您的用例),那么我们可以跟踪它。

于 2013-04-05T20:27:48.343 回答