Я использую Состояние сеанса ASP.NET для отслеживания зарегистрированных пользователей на моем сайте.
Однако одна проблема, с которой я сталкиваюсь, состоит в том, которые сеансовыми куки ASP.NET по умолчанию установлены истечь, когда браузер закрывается.
Я попытался установить свой собственный cookie asp NET_SessionId и изменить истечение cookie с помощью чего-то подобного следующему коду:
Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(1);
Ни один из этих подходов не работает, они все устанавливают второй cookie с тем же именем.
Существует ли способ изменить истечение сеансовых куки?
Я бы предложил вам использовать FormsAuthentication для отслеживания вошедших в систему пользователей. Вы можете использовать постоянный FormsAuthenticationCookie для достижения желаемого.
Или, если вы действительно хотите использовать состояние сессии, попробуйте эту технику.
Просто предположение: возможно, редактирование session.configuration внутри web.config может изменить срок действия cookie? Вы можете посмотреть здесь ?
Я думаю, что попытки поддерживать сеанс в течение длительного времени - это неправильный подход, который ограничивает вашу масштабируемость. Файл cookie сеанса указывает на конкретный сеанс, который поддерживается IIS на сервере. В общем, вы хотите, чтобы сеанс закрывался после того, как пользователь закрывает свой браузер, чтобы не использовать все доступные серверные ресурсы для неактивных пользователей. Вы хотите, чтобы сеанс для уходящего пользователя был закрыт, а ресурсы стали доступными для нового прибывающего пользователя. Вот почему срок действия cookie сеанса истекает.
Если вы хотите сохранить какое-то состояние пользователя после того, как пользователь закроет свой браузер, вы всегда можете посмотреть что-то вроде Профиль . Или, если это для чего-то вроде корзины покупок, вы можете сохранить свою корзину в базе данных, а затем повторно подключить ее к пользователю, когда он снова войдет в систему.