2013-09-08 4 views
0

Я довольно понятен с защитой переменных сеанса. Но у меня есть практическая проблема с сеансом. У меня есть представление, где я использую viewData, и этому представлению присваивается значение из переменной сеанса. У меня есть эта переменная сессии, помещенная в контроллер. В представлении у меняРабота с переменными сеанса

ViewData["MyView"] 

В контроллере

if(Session["MySession")!=null) 
{ 
    ViewData["MyView"]=Session["MySession"); 
} 

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

Controller1 Controller2 Controller3

Если я нажимаю на RunReport со страницы One, управление переходит к Controller1 и устанавливает переменную

like Session["MySession"]=1; 

сессии после установки этот сеанс, контроллер переходит к обычному контроллеру для установки ViewData [MyView], и добавление значения к этому представлению имеет различную логику каждый раз.

Similary, когда я нажимаю на Runreport со второй страницы, управление переходит к Controller2 и устанавливает переменную

like Session["MySession"]=1; 

сеанса после установки этого сеанса, контроллер переходит к общему контроллеру для установки ViewData [MyView] и добавленной стоимость для этого viewdata имеет разные логики каждый раз. Под этим я хочу сказать, что ViewData будет иметь разные значения каждый раз.

Similary, когда я нажимаю кнопку «Страница 3», управление ведет себя так же, как и все.

Все работает сейчас. Но моя проблема в том, что я использую Same session Variable в каждом отдельном контроллере. Предположим, что User1 открыл page1, и он нажимает на страницу runreport, так как эта переменная сеанса будет иметь значение, и после этого элемент управления перейдет к контроллеру Common и установит значение в виде данных. В то же время, если другой использует открывает page2, и он нажимает на runreport, то при щелчке снова этот процесс будет выполняться или предыдущий сеанс уже будет иметь значение даже если я нажму на runreport или нет. На самом деле я совершенно смущен. Пожалуйста помогите. дайте несколько технически точек понимания понимания на практическом уровне и, пожалуйста, очистите мою точку зрения. Большое спасибо.

ответ

2

Session для каждого пользователя, даже если он выглядит как статический в HttpContext.Current.Session. Два разных пользователя получат разные объекты Session, и каждый новый пользователь получит свой собственный пустой объект Session.

+0

Хорошо, Это означает, что для каждого нового пользователя будет новая переменная сессия создана. Предположим, что я первый пользователь, и этот пользователь открывает страницу1, а затем на странице runreport, которая будет перенаправляться на контроллер1, там создается сеанс, и управление переходит к commonController и устанавливает ViewData. Теперь сеанс все еще находится в памяти.Затем я открыл page2 и нажал кнопку runreprt и аналогичным образом, чтобы был создан новый сеанс veriable или первая переменная сессии будет переопределена? Или предположим, что если я просто открою страницу2 и не нажимаю кнопку runreport, тогда сессия все равно останется в памяти – Sandy

+0

продолжение с последнего комментария --- Память? Фактически, что будет влиять на эту переменную сеанса. Пожалуйста, помогите мне как можно скорее. Я буду благодарен вам – Sandy

+0

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

Смежные вопросы