DomainAccessGuard.Sessions 始终为空

发布于 2024-10-31 23:22:29 字数 544 浏览 4 评论 0原文

您好,我在集成踢用户的功能时遇到问题,因为 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);
            }
        }
    }

我正在从代理运行此

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

Hi I am having trouble Integrating the ability to kick users as the sessionCollection is always null.

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);
            }
        }
    }

I am running this from an agent

Does anybody know why it is null?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

满地尘埃落定 2024-11-07 23:22:29

编辑:请参阅问题评论。
需要更多代码/说明。

如果 DomainAccessGuard 为 null,则发布创建对象的位置的代码。

如果 DomainAccessGuard.Sessions 为空,则将代码发布到填充会话集合的位置。

如果DomainAccessGuard.Sessions(集合)为null,那么您需要将代码发布到实例化集合的位置 - 尽管我觉得这有点奇怪。

如果您尝试访问其 UserName 的集合中的单个 DomainAccessGuard.Session 为 null,则可能适用以下情况:

在我看来,您是尝试从您刚刚踢出的会话中读取用户名。这不会使您的会话无效吗?

这可能有效:

Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this);
DomainAccessGuard.Kick(ses.SessionID);

这只是一个猜测,我对 DomainAccessGuard 一无所知。

EDIT: See comment to question.
More code/clarification required.

If DomainAccessGuard is null then post the code from where you create the object.

If DomainAccessGuard.Sessions is empty then post the code where the sessions collection is filled.

If DomainAccessGuard.Sessions (the collection) is null then you'll need to post the code where the collection is instantiated - though I'd find that a little strange.

If the individual DomainAccessGuard.Session from within the collection that you're trying to access the UserName of is null then the following might apply:

It looks to me like you're trying to read the user name from a session you've just kicked. Wouldn't that make your session null?

This might work:

Log.Info("Brugeren (" + ses.UserName + ") er logget ud grundet 60 min. inaktivitet!", this);
DomainAccessGuard.Kick(ses.SessionID);

That's just a guess, I know nothing about DomainAccessGuard.

幸福还没到 2024-11-07 23:22:29

您需要调用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);
        }
    }
}

You need to call DomainAccessGuard.GetAccess() to initialize the Sessions collection

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);
        }
    }
}
岁月苍老的讽刺 2024-11-07 23:22:29

以下是一些 sitecore 文档,其中提供了如何减少会话超时的示例

它作为代理运行,并且还对会话进行 Assert.IsNotNull 检查。

希望这有帮助

Here is some sitecore documentation which provides an example of how to reduce session timeout.

It runs as an agent, and also has an Assert.IsNotNull check on session.

Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文