Модель безопасности в нашем приложении работает примерно так (очень просто, я знаю):
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 составляет час раньше, это должно означать, что время ожидания моего приложения истекает, но оно не истекает вообще.
Есть идеи?