В моем приложении MVC Core я использую сессии для отслеживания входов в систему. Это прекрасно работает, но это проблема, когда мое веб-приложение бездействует / перезапускается, так как сеансы очищаются и все пользователи выходят из системы. Я изменил свое приложение, чтобы хранить данные сеанса в кэширующей таблице базы данных, вызывая и задавая services.AddDistributedSqlServerCache(options)
& services.AddSession(options)
в методе Startup ConfigureServices
, а также вызывая app.UseSession()
в методе Configure
.
Кажется, я все сделал правильно; когда новый клиент впервые устанавливает значение сеанса, он сохраняется в таблице кэширования, а когда Sesion.Get
называется сеансом ExpiresAtTime
обновления значения таблицы.
Итак, учитывая, что данные сеанса сохраняются в таблице, почему они не собираются при перезапуске? Это не проблема с cookie, значение срока действия cookie установлено на 10 лет, а значение времени ожидания простоя сеанса равно 2 неделям. Кажется, что данные сеанса просто обрабатываются через память IIS, но при этом сохраняются в моей кеширующей db-таблице, что я нахожу очень странным.