Почему общий доступ к ASP.NET SessionState между двумя приложениями с помощью StateServer использует один и тот же SessionID, но не значения ключей? - PullRequest
0 голосов
/ 02 августа 2011

Я выхожу из идей. Я пытаюсь использовать один и тот же SessionState между двумя приложениями .Net 4, работающими в одном пуле приложений и использующими mode="StateServer". Я выполнил тест для обоих приложений, и у меня получился любопытный результат: SessionID является общим, но не фактические элементы сеанса .

Как это работает внутри? Это ограничение безопасности где-то задокументировано?

Снимок экрана 1 - я устанавливаю элемент сеанса (простая дата в TestData ) в приложении № 1 /SecureSessionTest.aspx: enter image description here

Снимок экрана 2 - я читаю тот же элемент сеанса TestData в приложении # 2 /Apps/SecureSessionTest.aspx, но отображается только SessionID: Screenshot1: SessionID is shared, but not item TestData

Я даже могу установить разные данные в одном и том же Session("key"). Weird!

У них обоих это есть в web.config:

<machineKey validationKey='7D1094A0FC13B6656141916F69F6E25D0F112A6E94BD3EF5DAEFD9755A367C09607E7D76827AC5ACAD14456665C4E0966F632F09522475758A815A4045BF3F25'   decryptionKey='F0DF9FA0522E541FF246ADD8BC285A10E984444AE4361631' validation='SHA1'/>
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="60" regenerateExpiredSessionId="false" cookieName="XXXXXXXX_ASP.NET_SessionId" />

Есть идеи? Помощь очень ценится!

Карл

Ответы [ 2 ]

0 голосов
/ 14 декабря 2012

@ Эш прав: сеанс основан на идентификаторе сеанса (который зависит от ключа компьютера и домена сайта) и имени приложения, но я заставил его работать на одном сайте в каталогах приложений ( звучит как ваш сценарий) - см. мой ответ на сеанс сервера состояний - кросс-домен приложений?

Похоже, что вам не хватает части, которая явно задает имя приложения в global.asax (используя отражение - я не нашел настройки для этого). Я только что узнал об этом после поисков в настройках все утро.

0 голосов
/ 02 августа 2011

StateServer отключает сеанс от комбинации файла cookie SessionID, ключа компьютера и имени приложения.

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

Этот предыдущий вопрос может быть освещен: Состояние сеанса и пул приложений

(Если мое первоначальное предложение не работает, пожалуйста, прокомментируйте, и я буду копать глубже)

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