Как я могу хранить данные сеанса в ASP.NET?

У нас есть гибкое приложение, которое работает с ASP.NET. (через вебборб). И мы используем несколько данных на стороне .NET для загрузки данных, например: UserId, ChannelId,... На данный момент только идентификатор пользователя хранится в имени HttpContext.Current.Identity. Таким образом, гибкой стороне не нужно постоянно отправлять идентификатор пользователя, но теперь мы также хотим отключить «проталкивание» идентификатора канала.

Мне было интересно, где мы должны «хранить» эти данные. Достаточно ли сохранить сеанс или нам нужно использовать файл cookie? или есть ли другие методы решения этой «проблемы».


person user29964    schedule 10.03.2009    source источник


Ответы (3)


Я бы рекомендовал использовать Session, потому что значения затем сохраняются на сервере (файлы cookie хранятся на клиенте). Также используйте статический класс и оберните туда сеанс.

Вместо

Session["channelid"] = ChannelId

использовать

SessionManager.ChannelId = ChannelId

и вы можете объявить SessionManager как статический класс со статическими свойствами, которые используют сеанс. Я считаю, что это также общая практика Microsoft.

Ваше здоровье

person Sheraz    schedule 10.03.2009

Сессия звучит как хороший выбор для этого. Несмотря на то, что это вызывает большое отвращение, если вам действительно не нужно масштабироваться до очень большого количества одновременных пользователей, нет причин избегать его для такого небольшого объема данных за сеанс.

Файлы cookie — это вариант, однако это означает, что данные хранятся на стороне клиента, что может быть нежелательно и увеличивает объем каждого запроса, отправляемого на сервер.

person AnthonyWJones    schedule 10.03.2009

Если это просто случай хранения userId и channelId или аналогичных целочисленных значений, я предпочитаю сеанс, но если у вас будет больше данных, чем у них, и у вас есть довольно большое количество возможных одновременных сеансов, то сеанс может быть немного тяжелым.

person Kunal S    schedule 10.03.2009