более стойкий, чем сессия? - PullRequest
3 голосов
/ 28 июня 2010

у нас есть приложение asp.net, которое использует сеанс (in-proc) для одного пользователя на разных страницах, теперь они хотят, чтобы данные (например, корзина) были более постоянными, даже если они выходят из веб-приложения, что означает закрытиебраузер, в следующий раз, когда они входят в систему, используют тот же идентификатор, они хотят вернуть данные, любое решение в ASP.NET?

Если мы сохраним сессию в sql-сервере, который, как я думаю, является опцией Microsoft, но яне уверен, работает ли он даже после того, как пользователь покинул приложение или закрыл браузер

Ответы [ 4 ]

13 голосов
/ 28 июня 2010

Данные сеанса предназначены только для сохранения в течение всего времени сеанса браузера.

Ответ заключается в том, чтобы не сохранять данные в сеансе, а сохранять их в базе данных в таблицах ShoppingCart и ShoppingCartItem.,Они будут сохраняться столько, сколько вы хотите.

Таблица ShoppingCart будет иметь столбец UserID, равный FK вашей таблице User.

2 голосов
/ 28 июня 2010

Вам нужно будет создать реляционную базу данных и хранить там записи.

Конечно, область действия Application выше, чем Session, но она будет существовать только в течение срока службы пула приложений. Похоже, вы ищете постоянное хранилище.

1 голос
/ 28 июня 2010

Я видел, как система корзины покупок использует файлы cookie, а некоторые используют как файлы cookie, так и базу данных.

Только cookie: «Официальный» размер файла cookie составляет 4K

Cookie + база данных:Сохраните GUID в файле cookie и используйте его в качестве ссылки в базе данных

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

0 голосов
/ 28 июня 2010

Вам потребуется использовать базу данных для зеркального отображения данных, содержащихся в сеансе, таким образом, данные будут сохраняться в течение длительного времени после выхода пользователя из системы, при перезапуске приложения или при перезапуске сервера.Вы можете сохранить объект сеанса в sql-server как двоичный объект и при необходимости сериализовать / десериализовать, но как узнать, когда выполнять начальную сериализацию?Трудно сказать, когда пользователь вышел из системы, если он закрывает окно браузера.

Сохранение объекта сеанса в виде одного столбца может работать в промежуточный период, но в долгосрочной перспективе вы, вероятно, захотите придумать правильный реляционный дизайн и сохранить данные в столбцах в таблицах, чтобы вы могли запуститьзапросы и отчеты в отношении «незавершенных» корзин для покупок (например, как долго люди оставляют корзину для покупок перед окончательной проверкой?).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...