ASP.NET: Session.SessionID изменяется между запросами

Почему свойство SessionID объекта Session на странице ASP.NET изменяется между запросами?

У меня есть такая страница:

...
<div>
    SessionID: <%= SessionID %>
</div>
...

И вывод постоянно меняется каждый раз, когда я нажимаю F5, независимо от браузера.

134
задан Seb Nilsson 1 November 2016 в 09:41
поделиться

2 ответа

Вот причина

При использовании состояния сессии на основе cookie, ASP.NET не выделяет хранилище для данных сессии до тех пор, пока не будет использован объект Session. В результате новый идентификатор сеанса генерируется для каждого запроса страницы до тех пор, пока объект сеанса не будет использован. Если вашему приложению требуется статический идентификатор сессии на весь сеанс, вы можете либо реализовать метод Session_Start в файле Global.asax приложения и сохранить данные в объекте Session для фиксации идентификатора сессии, либо использовать код в другой части вашего приложения для явного сохранения данных в объекте Session.

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx

Таким образом, если вы не обращаетесь к объекту Session на бэкенде, при каждом запросе будет генерироваться новый SessionId

EDIT

Этот код должен быть добавлен в файл Global.asax. Он добавляет запись к объекту Session, чтобы вы фиксировали сессию, пока она не истечет.

protected void Session_Start(Object sender, EventArgs e) 
{
    Session["init"] = 0;
}
209
ответ дан 23 November 2019 в 23:54
поделиться

Убедитесь, что у вас нет очень короткого тайм-аута сеанса, а также убедитесь, что если вы используете сеансы на основе файлов cookie, вы принимают сеанс.

FireFox webDeveloperToolbar полезен в такие моменты, поскольку вы можете видеть файлы cookie, установленные для вашего приложения.

0
ответ дан 23 November 2019 в 23:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: