Ядро Asp.Net / Razor Pages странное поведение сеанса: сеанс выбрасывается каждый раз - PullRequest
0 голосов
/ 04 января 2019

У меня есть приложение Razor Pages, где у меня есть один действительно простой раздел, где пользователь вводит идентификатор и перенаправляется на страницу, которая отображает определенный контент.

Когда пользователь вводит идентификатор, я устанавливаю переменную Session так:

HttpContext.Session.Clear();
HttpContext.SignOutAsync();
foreach(var cookie in Request.Cookies.Keys)
{
    Response.Cookies.Delete(cookie);
}
HttpContext.Session.SetInt32("Token", 12345);
return Redirect("/DisplayPresentation");

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

В основном я получаю это значение сеанса на перенаправленной странице, просто так:

int tokenId = HttpContext.Session.GetInt32("Token") ?? default(int);

По какой-то причине я не могу объяснить себя, каждый раз, когда я делаю этот процесс "входа в систему", сеанс отбрасывается сервером, поэтому tokenId будет 0.

Я заметил, что у меня есть нормальная система авторизации для другого раздела приложения, так что, возможно, это делает забавные вещи.

Любая помощь будет принята с благодарностью. Заранее спасибо! (PS: я надеюсь, что предоставил достаточно информации для решения проблемы)

1 Ответ

0 голосов
/ 04 января 2019

Удаление файлов cookie удаляет файл cookie, который отслеживает состояние сеанса. Таким образом, удаляя файлы cookie, вы фактически удаляете состояние сеанса и заставляете создавать новое. Итак:

  1. Запрос 1, он устанавливает целое число в сеансе.
  2. Запрос 2 устанавливает сеанс с целым числом, затем удаляет cookie сеанса, который устанавливает новый сеанс без cookie.
  3. Запрос 3 получает новый сеанс, который не включает целое число.
...