Состояние сеанса с повторной поддержкой не сохраняет все - PullRequest
0 голосов
/ 17 сентября 2018

Мы пытаемся перейти от сеанса сервера (IIS) к сеансу с поддержкой Redis. Я обновил свой web.config с помощью пользовательской конфигурации sessionState. Я обнаружил, что только некоторые из моих пар ключ / значение сохраняются. Из 5 я ожидаю, что там будет только 2. Я проверил, что весь мой код в конечном итоге попадает в HttpContext.Current.Session.Add. Я проверил, что мои POCO помечены как сериализуемые. Глядя на мониторинг, я вижу, что он добавляет первые две пары, затем все, что после этого просто не получается. Нет попадания, нет отклонения, нет исключений. Ничего.

Кто-нибудь когда-нибудь видел это? Знаете, где я могу начать искать решения?

ТИА, Matt


Обновление 1: я переключился на использование сериализатора JSON для хранения моих данных. То же самое. Кажется, не проблема с сериализацией.


Обновление 2: я сейчас скачал исходный код, скомпилировал и отлаживаю его. Метод SetAndReleaseItemExclusive, который, по-видимому, отправляет элементы сеанса в Redis, используется только один раз, хотя он должен быть выполнен более одного раза, поскольку мой веб-сайт обрабатывает SSO и отскакивает от страницы к странице, чтобы загрузить пользователя и тому подобное. Нужно выяснить, почему это только один раз ...

1 Ответ

0 голосов
/ 17 сентября 2018

Разобрался.Оказывается, что мой AJAX-запрос к конечной точке «API» без моего приложения MVC не был связан с соответствующим состоянием сеанса.Поэтому SetAndReleaseItemExclusive никогда не вызывался.Добавление это исправило это:

protected void Application_PostAuthorizeRequest()
    {
        if (HttpContext.Current.Request.Url.LocalPath == "/api/user/load")
            HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
        else
            HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.ReadOnly);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...