DomainAccessGuard.Sessions始终为null

时间:2011-04-11 09:10:46

标签: sitecore sitecore6

您好我遇到了麻烦整合启动用户的能力,因为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);
            }
        }
    }

我是从代理

运行的

有人知道为什么它是空的吗?

3 个答案:

答案 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检查。

希望这有帮助