Получить идентификатор сеанса SSL в asp.net - PullRequest
4 голосов
/ 12 мая 2010

Есть ли способ получить серверный идентификатор сеанса SSL в asp.net?

Ответы [ 2 ]

3 голосов
/ 21 мая 2010

короткий ответ - нет. Это намеренное ограничение IIS для предотвращения зависимости людей от чего-то, что не является надежным.

На рынке вы найдете различные аппаратные балансировщики нагрузки, которые будут предлагать такие функции, как постоянство сервера на основе идентификатора сеанса SSL, но они не очень хорошо работают, потому что пересмотр SSL может произойти в любое время. Например, в Internet Explorer 8 новый сеанс SSL согласовывается для каждой вкладки , открытой для веб-сайта. Вы можете ожидать аналогичного поведения от других многопроцессорных браузеров. Итак, я должен подчеркнуть, что вы не должны использовать идентификатор сеанса SSL для каких-либо целей идентификации пользователя.

Тем не менее, если вам действительно нужна информация об идентификаторе сеанса SSL для какой-либо специализированной задачи, я рекомендую использовать Apache, mod_ssl и mod_proxy в качестве интерфейса вашей системы IIS. Немного повозившись, вы могли бы заставить mod_ssl дать вам идентификатор сеанса, который затем могли бы добавить в прокси-запрос к вашему серверу IIS в качестве параметра строки запроса .... или вы можете сохранить его в базе данных.

0 голосов
/ 21 мая 2010

Тим

Вы действительно "просто" пытаетесь получить строку идентификатора сеанса или, возможно, вы теряете всю информацию о сеансе при переходе на SSL? это было бы довольно распространенной проблемой, потому что сеанс на стороне сервера теряется при использовании хранилища сеансов «InProc», и cookie сеанса на клиенте могут быть потеряны, если они не хранятся в общем домене.

Поэтому вам следует переключиться на управление сессиями сервера состояний или сервера sql в файле Web.config, например:

<sessionState mode="SQLServer"
   cookieless="true"
   regenerateExpiredSessionId="true"
   timeout="30"
   sqlConnectionString="Data Source=MySqlServer;Integrated Security=SSPI;"
   stateNetworkTimeout="30" />

Кроме того, я не знаю, почему вы не сможете получить HttpContext.Current.Session.SessionID также и в режиме SSL.

Некоторые ссылки MSDN:

Может быть, это как-то помогает.

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...