Состояние сеанса обмена между 2 приложениями ASP.NET с использованием SQL Server
-
18-09-2019 - |
Вопрос
Я работаю на сайте, на котором необходимо обмениваться сеансом между приложением CMS и приложением интернет -магазина в том же домене, например.
mydomain.com
а также
store.mydomain.com
Я добился некоторого прогресса с этим, и это работает на моей местной сборке между
localhost/cms
а также
localhost/store
В основном я сделал то, что предлагается в этой статье
и взломал хранимую процедуру TempagAppid, чтобы вернуть тот же идентификатор приложения (1). Похоже, что это работает, поскольку создает сессии с такими идентификаторами, такими как «Abv5d2urx1asscfwuzw3wp4500000001», что я и ожидаю.
Моя проблема в том, что когда я развертываю его в нашей среде тестирования, это создает новый сеанс, когда я перемещаюсь между двумя сайтами. Поэтому, когда я запускаю сеанс на сайте CMS, если я перейду в магазин, он создает новый сеанс. Они настроены как 2 разных сайта в IIS7.
В файлах web.config для обоих сайтов и элементы одинаковы и являются следующими (минус конфиденциальная информация)
У кого -нибудь есть идеи, почему это может не работать? Я делюсь аутентификацией форм на 2 сайтах, и это работает нормально. Любая помощь или идеи были бы очень оценены!
Большое спасибо
Дэйв
Решение
Похоже, что проблема, с которой мы столкнулись, заключалась в том, что сессионный домен cookie -файла был по -разному устанавливаться в 2 приложениях. Это означало, что каждое приложение сгенерировало свое собственное сеанс.
Мы добавили<httpCookies domain=".ourdomain.co.uk" />
для нашего Web.Config, и это, кажется, решило это. Спасибо за помощь, надеюсь, это поможет кому -то еще в будущем.
Другие советы
Сохраняйте все данные сеанса на SQL-сервере, используя ID Session-ID в качестве ключа. Затем используйте файл cookie, содержащий сеанс-идентификатор, который указывает на .mydomain.com
Таким образом, он будет доступен на обоих поддомах.
Этот Статья за 15 секунд охватывает предмет и даже показывает технику для обмена сеансами в совершенно разных областях.