Я пытаюсь определить тайм-аут состояния сеанса в приложении asp.net и не могу этого сделать. У меня есть базовый класс, который наследуется от System.Web.UI.Page следующим образом: -
public class BasePageSessionExpire : Page
{
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
if (Context.Session != null)
{
if (Session.IsNewSession)
{
string szCookieHeader = Request.Headers["Cookie"];
if ((null != szCookieHeader) && (szCookieHeader.IndexOf("ASP.NET_SessionId") > 0))
{
Session.Abandon();
Response.Redirect("~/SessionExpired.aspx",true);
}
}
}
}
}
Все страницы, для которых мне требуется проверка состояния сеанса, происходят из этого базового класса, а не "System.Web.UI.Page". Кроме того, все эти страницы имеют EnableSessionState = "True". У меня есть пустой метод Session_Start () в моем файле global.asax, если это вообще актуально.
По какой-то причине после первого запроса свойство Session.IsNewSession всегда имеет значение false. Это верно только для первого запроса, а затем всегда ложно. У меня время ожидания установлено на 1 минуту. Сессия никогда не кажется тайм-аутом. Что мне здесь не хватает?
Также я реализовал сервер состояний в SQL Server 2008. Это не реализация состояния сеанса внутри процесса.
Заранее спасибо.