Когда сеансовые переменные исчезают? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть одностраничное приложение .NET 4.7.1 MVC. Мой Page_Load () для Default.aspx.cs устанавливает переменные сеанса, и, когда моя точка останова в последней строке Page_Load() достигнута, объект сеанса сохраняется правильно. Однако, когда я щелкаю ссылку и нажимаю свою точку останова в первой строке Page_Load () для второго вызова, HttpContext.Current.Session не имеет установленных переменных сеанса. Кроме того, HttpContext.Current.Session.SessionID изменяется после первого вызова, а затем остается неизменным. Последующие вызовы работают правильно, но первый после перезапуска пула приложений всегда пуст.

У меня нет записи httpCookies в web.config, и я всегда получаю доступ через HTTPS. Приложение работает в службе приложений Azure, и я использую OpenID Connect для аутентификации. При каких обстоятельствах переменные удаляются из HttpContext.Current.Session до истечения времени ожидания?

ОБНОВЛЕНИЕ: я добавил некоторые диагностические журналы и иногда SessionID изменения без сброса фактических данных сеанса. Я не знаю, как это может быть, но думал, что запишу это. Кроме того, кажется, что моя регистрация идентификатора сеанса устранила проблему. Я видел, как другие упоминали, что сеанс не сохраняется до тех пор, пока к нему нет доступа (что происходит), но (без тщательного поиска) я подозреваю, что все чтение и запись сеанса в первом вызове происходит в других сборках и, следовательно, возможно, нет быть «посчитанным» как причина для сохранения сессии? Это кажется очень странным, но пока это мое единственное предположение. Я все еще не понимаю, почему это могло начаться сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...