我已经在服务堆栈中启用了 session 支持,例如:
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 是在访问网站时设置的,但是我想知道 session 何时启动(即来自该用户的第一个请求),以便我可以捕获传入的引荐来源网址。
使用传统的 asp.net session ,我会在 Global 中使用 Session_Start,但是在使用 SS session 时这不会触发我。
使用 ServiceStack 时有没有好的方法来检测此 session 启动事件?我在网上查询或 ServiceStack Sessions wiki 上没有找到任何引用资料.
最佳答案
目前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's GitHub issues 中的一项功能请求。 (并包括您的用例),以便我们可以跟踪它。
关于session - 使用 ServiceStack session 功能时检测 session 开始(类似于 Global.asax Session_Start)的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15842846/