您好我遇到了麻烦整合启动用户的能力,因为sessionCollection始终为空。
public void KickStaleUsers()
{
foreach (DomainAccessGuard.Session ses in DomainAccessGuard.Sessions) //<--- This is null
{
if (DateTime.Now.Subtract(ses.LastRequest).Minutes >= 60)
{
DomainAccessGuard.Kick(ses.SessionID);
Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this);
}
}
}
我是从代理
运行的有人知道为什么它是空的吗?
答案 0 :(得分:0)
编辑:请参阅提问评论。 需要更多代码/说明。
如果DomainAccessGuard
为null,则从您创建对象的位置发布代码。
如果DomainAccessGuard.Sessions
为空,则发布填充会话集合的代码。
如果DomainAccessGuard.Sessions
(集合)是null
,那么你需要发布实例化集合的代码 - 尽管我发现它有点奇怪。
如果您尝试访问DomainAccessGuard.Session
的集合中的个人UserName
为null,则以下内容可能适用:
在我看来,您正试图从刚刚踢过的会话中读取用户名。这不会使你的会话成为空吗?
这可能有效:
Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this);
DomainAccessGuard.Kick(ses.SessionID);
这只是猜测,我对DomainAccessGuard一无所知。
答案 1 :(得分:0)
您需要致电DomainAccessGuard.GetAccess()
初始化Sessions集合
if(DomainAccessGuard.GetAccess())
{
foreach (DomainAccessGuard.Session ses in DomainAccessGuard.Sessions) //<--- This is null
{
if (DateTime.Now.Subtract(ses.LastRequest).Minutes >= 60)
{
DomainAccessGuard.Kick(ses.SessionID);
Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this);
}
}
}
答案 2 :(得分:0)
以下是一些提供example of how to reduce session timeout。
的sitecore文档它作为代理运行,并且在会话中也有Assert.IsNotNull检查。
希望这有帮助