Подтвердить что ты не робот

Asp.net - сеанс - несколько вкладок браузера - разные сеансы?

Я бы хотел сохранить состояние сеанса на вкладке браузера.

Легко ли это (или даже возможно) делать в ASP.NET?

Пример: пользователь нажимает Ctrl-T в firefox 5 раз и посещает сайт на каждой вкладке. Я бы хотел, чтобы каждая вкладка имела собственное состояние сеанса на сервере

4b9b3361

Ответ 1

Чтобы облегчить состояние сеанса нескольких вкладок для одного пользователя без загромождения URL-адреса, выполните следующие действия.

В вашей функции загрузки формы:

If Not IsPostback Then
  'Generate a new PageiD'
  ViewState("_PageID") = (New Random()).Next().ToString()
End If

Когда вы сохраняете что-то в своем состоянии сеанса, укажите PageID:

Session(ViewState("_PageID").ToString() & "CheckBoxes") = D

Примечания:

  • Как и в случае с идентификатором сеанса, вы не можете верить, что злонамеренные зрители не изменят SessionID/PageID. Это только допустимое решение для среды, где всем пользователям можно доверять. К счастью, ViewState предлагает больше защиты, чем использование скрытого поля ввода.
  • У вас не будет доступа к PageID, пока ViewState не будет восстановлен после PostBack. Поэтому у вас не будет доступа к идентификатору страницы в обработчике page_init().

Ответ 2

<configuration>
  <system.web>
    <sessionState cookieless="true"
      regenerateExpiredSessionId="true" />
  </system.web>
</configuration>

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

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