Почему свойство SessionID объекта Session на странице ASP.NET изменяется между запросами?
У меня есть такая страница:
...
<div>
SessionID: <%= SessionID %>
</div>
...
И вывод постоянно меняется каждый раз, когда я нажимаю F5, независимо от браузера.
Вот причина
При использовании состояния сессии на основе 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;
}
Убедитесь, что у вас нет очень короткого тайм-аута сеанса, а также убедитесь, что если вы используете сеансы на основе файлов cookie, вы принимают сеанс.
FireFox webDeveloperToolbar полезен в такие моменты, поскольку вы можете видеть файлы cookie, установленные для вашего приложения.