Почему не работает значение времени ожидания сеанса? - PullRequest
1 голос
/ 17 августа 2011

Модель безопасности в нашем приложении работает примерно так (очень просто, я знаю):

public bool IsAuthenticated
    {
        get
        {
            if (Session[EnumsAndConstants.Keys.UserId] == null)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    }

Таким образом, в основном на каждой странице, которая защищена, у нас есть код:

private void VLSProtectedPage_Init(object sender, EventArgs e)
    {
        if (!IsAuthenticated)
        {
            Response.Redirect("~/Login.aspx");
        }
    }

В нашем веб-конфиге у нас есть строка:

<sessionState mode="SQLServer" sqlConnectionString="Data Source=xx;User Id=xx;Password=xx;" timeout="1" />

Однако время ожидания в 1 минуту не работает. Если я оставляю страницу простаившей более 1 минуты, я все еще вхожу в систему.

Что очень странно, так это результаты, которые я получаю из базы данных сеансов:

Создан SessionId Истекает Срок действия LockDate LockDateLocal LockCookie Тайм-аут заблокирован ha4b05pqsnopfwu2wqiohkce2b7731d2 2011-08-17 14: 24: 07.303 2011-08-17 14: 25: 17.867 2011-08-17 14: 24: 17.840 2011-08-17 15: 24: 17.840 14 1 0

Вы можете видеть, что созданным временем данных является '2011-08-17 14: 24: 07.303', однако я вошел в приложение только в 15:25. Таким образом, похоже, что сессия движка .net на 1 час преждевременна. Я проверил системное время и дату, и это правильно.

В целом, даже если время exprires составляет час раньше, это должно означать, что время ожидания моего приложения истекает, но оно не истекает вообще.

Есть идеи?

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