2011-01-30 3 views
0

Я настроил веб-приложение asp.NET для использования проверки подлинности форм и сохранения сеанса в пользовательской таблице. Пока все хорошо, когда я регистрирую аутентификацию, сохраняется в сеансах браузера. Я пытаюсь схватить возможности хранения сеанса, но я столкнулся с проблемой на ранней стадии.Состояние сеанса ASP.NET SqlServer

Если я добавляю переменные/значения к объекту сеанса и выводят переменные сеанса на страницу, пары переменных/значений отображаются, как ожидалось, но когда я закрываю и снова открываю браузер, правильная перезагрузка сеанса, как и ожидалось (который я подтверждаю, выведя sessionid), но пары переменных/значений исчезли.

Есть ли что-то очень простое, я здесь отсутствует, так как я понимаю, что переменные сеанса также должны быть доступны в сеансах браузера (строки можно сериализовать правильно?).

List<SessionVar> sessionVars = new List<SessionVar>(); 
protected void Page_Load(object sender, EventArgs e) 
{ 
    Session[Session.SessionID] = Session.SessionID; 
    LoadSessionData(); 
} 

protected void btnSessionVariable_Click(object sender, EventArgs e) 
{ 
    Session[txtVariableName.Text.Trim()] = txtVariableValue.Text.Trim(); 
    txtVariableName.Text = string.Empty; 
    txtVariableValue.Text = string.Empty; 
    LoadSessionData(); 
} 

private void LoadSessionData() 
{ 
    sessionVars.Clear(); 
    foreach (string key in Session.Keys) 
    { 
     sessionVars.Add(new SessionVar(key, (string)Session[key])); 
    } 
    gridView.DataSource = sessionVars; 
    gridView.DataBind(); 
} 

ответ

1

Состояние сеанса НЕ поддерживается, когда браузер (или вкладка браузера) закрывается и перезапускается. Сессионный файл cookie больше не доступен для нового окна браузера, поэтому начнется новый сеанс. То, что ASP.NET присваивает тот же идентификатор снова, - это просто совпадение.

Смежные вопросы