В моем (самостоятельно размещенном) приложении я использую переменную сеанса в качестве тривиального «переключателя»:
string PunkteAbzugBeauty = HttpContext.Session.GetString("SuchPunkteAbzugBeauty");
if (PunkteAbzugBeauty == null)
{
HttpContext.Session.SetString("SuchPunkteAbzugBeauty", "1");
SuchPunkteAbzugBeauty = true;
}
else
{
SuchPunkteAbzugBeauty = false;
}
Цель состоит в том, чтобы для SuchPunkteAbzugBeauty (запрашиваемого в следующем коде) было установлено значение true для каждого сеанса вовремя.
Проблема:
Это работает во всех протестированных браузерах (IE, Edge, FireFox) , за исключением Google Chrome (версия 75.0.3770.100).
В режиме разработки GC я вижу .AspNetCore.Session (1) с (зашифрованным) содержимым (2) , и для параметра Expires установлено значение «Session» (3) что должно быть правильно:
Если я закрою браузер и перезапущу GC, содержимое (2) точно так же, как и раньше.
Если я сделаю то же самое с FireFox, содержимое (2) меняется при каждом новом запуске (что я и ожидал). Моя логика работает с любым браузером, кроме GC (SuchPunkteAbzugBeauty всегда имеет значение false).
Мне кажется, что GC «кэширует» или восстанавливает AspNetCore.Session в фоновом режиме при перезапуске браузера.
Кто-нибудь еще с подобными проблемами?
Я что-то пропускаю (есть специальные настройки для GC, я не знаю)?