2015-05-22 2 views
2

Я почти уверен, что я ищу, но я не нашел в документации Microsoft и здесь.Получить уникальный идентификатор сеанса/ключа на стороне сервера

Я просто хочу получить уникальный идентификатор (строка или номер, на самом деле я не против) от клиента в ASP.NET 4.5 на стороне сервера. Я хочу, чтобы этот идентификатор был связан с сеансом, который отличается для каждой системы, которая будет подключаться к моему серверу (например, несколько компьютеров или одного клиента с разными браузерами), но то же самое, если пользователь открывает несколько вкладок в одном браузере на моем сервере.

Я уже смотрел на:

  • System.Web.UI.Page.ClientID: Это имя элемента управления (так всегда "__Page").
  • System.Web.UI.Page.UniqueID: Он возвращает то же самое.
  • Session.LCID: Я не уверен, к чему это относится, но это то же самое, если я подключаюсь к своему серверу с разными браузерами.
  • Session.SessionID: Меняйте каждый раз, когда я обновляю страницу или открываю ее на новой вкладке.
  • Request.AnonymousID: Is null.

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

ответ

1

То, что вы ищете, на самом деле является Session.SessionID, однако оно поставляется с оговоркой.

MSDN От:

При использовании куки на основе состояния сеанса, ASP.NET не выделяет для хранения данных сессии, пока не используется объект Session. В результате для каждого запроса страницы создается новый идентификатор сеанса, пока не будет доступен доступ к объекту сеанса. Если вашему приложению требуется статический идентификатор сеанса для всего сеанса, вы можете либо реализовать метод Session_Start в файле приложения Global.asax, либо сохранить данные в объекте Session, чтобы исправить идентификатор сеанса, или вы можете использовать код в другой части вашего приложение для явного хранения данных в объекте Session.

0

Я предлагаю использовать значения REMOTE_ADDR/REMOTE_HOST из коллекции ServerVariables. Они имеют одинаковые значения, даже если пользователь использует несколько браузеров и использует разные сеансы с одного и того же компьютера. Обратите внимание, что REMOTE_HOST может не всегда иметь значение. Ссылки: https://msdn.microsoft.com/en-us/library/system.web.httprequest.servervariables(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/ms524602(v=vs.90).aspx

+0

Я попробовал этот метод: есть проблема, когда несколько машин подключить через ту же услугу VPN, которые управляют их IP-адреса: они имеют один и тот же IP-адрес. – Aracthor

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