создание глобальной сессии - PullRequest
2 голосов
/ 19 августа 2010

Я хочу создать глобальный сеанс, который будет оставаться активным до тех пор, пока мы не уничтожим его вручную. как это сделать в asp.net с помощью c # что я делаю, это

HttpContext.Current.Session["UserID"] = someValue;

но при этом сеанс через некоторое время теряется.

Ответы [ 4 ]

1 голос
/ 19 августа 2010

Вы можете установить тайм-аут в web.config в system.web -> sessionState -> timeout.Не уверен, что вы можете провести бесконечный сеанс.

Также вас может заинтересовать объект Application, который хранит вещи в «сеансе приложения» вместо пользователя.Мне приходит в голову, потому что вы говорите о «глобальном» сеансе.

Что за приложение для этого?Похоже, вы на самом деле пытаетесь использовать сеанс в качестве постоянного хранилища, которое, однако, будет работать только на первый взгляд, даже если вам удастся установить тайм-аут никогда, или 5 лет, или что-то еще, потому что сеансы будут «истекли» после перезагрузки приложения,Вы все еще можете обойти это, но вам лучше поискать реальное решение для персистентности, такое как база данных.Я, конечно, могу совершенно не догадываться о вашем заявлении.

1 голос
/ 19 августа 2010

Храните данные скорее в состоянии приложения.Он будет оставаться там до тех пор, пока вы его не удалите, или приложение не умрет / перезапустит / закроет.

Использование:

HttpContext.Current.Application["Foo"] = "bar";
0 голосов
/ 19 августа 2010

Возможно, вы ищете профили?

http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

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

Профили могут использоваться как анонимными, так и аутентифицированными пользователями.Когда анонимный пользователь входит в систему, его анонимный профиль может быть перенесен в аутентифицированный профиль (т. Е. Тот, который прикреплен к его имени пользователя).

Хорошее прохождение здесь: http://quickstarts.asp.net/quickstartv20/aspnet/doc/profile/default.aspx

0 голосов
/ 19 августа 2010

Как говорит nicolas78, используйте свойство конфигурации тайм-аута сеанса для управления истечением сеанса после бездействия пользователя.В случае, если вы сталкиваетесь с требованием, когда сеанс должен быть активным, пока открыт браузер, есть два способа -

  1. Использовать cookie для хранения некоторого токена, а затем пересоздать состояние сеанса, используямаркер, если сеанс истек.Например, данные пользователя могут быть восстановлены из хранилища пользователя, если идентификатор пользователя хранится в токене.В худшем случае вам, возможно, придется перенести все состояние в базу данных.
  2. Сохраняйте состояние сеанса ASP.NET, но сохраняйте его живым, запуская запросы AJAX из браузера.Я бы посоветовал выполнить такой запрос после интервала n / 3, где n - время ожидания сеанса (при условии, что по крайней мере три запроса выполнены, даже если два будут потеряны или упадут по краям, один пройдет).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...