DomainAccessGuard.Sessions всегда пусто - PullRequest
2 голосов
/ 11 апреля 2011

Привет, у меня проблемы с интеграцией возможности пнуть пользователей, поскольку 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 голосов
/ 13 апреля 2011

Вам нужно позвонить 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);
        }
    }
}
0 голосов
/ 02 июня 2011

Вот некоторая документация по sitecore, в которой приведен пример того, как сократить время ожидания сеанса .

Он работает как агент, а также имеет проверку Assert.IsNotNull в сеансе.

Надеюсь, это поможет

0 голосов
/ 11 апреля 2011

РЕДАКТИРОВАТЬ: см. Комментарий к вопросу.Требуется больше кода / уточнения.

Если DomainAccessGuard равно нулю, отправьте код, из которого вы создаете объект.

Если 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...