Совместное использование состояния сеанса между двумя приложениями ASP.NET, использующими SQL Server - PullRequest
8 голосов
/ 08 марта 2010

Я работаю над сайтом, на котором требуется разделить сеанс между приложением cms и приложением интернет-магазина в одном домене, например.

mydomain.com

и

store.mydomain.com

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

localhost/cms

и

localhost/store

В основном я сделал то, что предлагается в этой статье

http://blogs.msdn.com/toddca/archive/2007/01/25/sharing-asp-net-session-state-across-applications.aspx

и взломал хранимую процедуру TempGetAppID, чтобы вернуть тот же идентификатор приложения (1). Похоже, это работает, поскольку создает сеансы с идентификаторами, такими как abv5d2urx1asscfwuzw3wp4500000001, что я и ожидал.

Моя проблема заключается в том, что при развертывании его в нашей среде тестирования он создает новый сеанс при переходе между двумя сайтами. Поэтому, когда я начинаю сеанс на сайте cms, если я перехожу в магазин, он создает новый сеанс. Они созданы как 2 разных веб-сайта в IIS7.

В файлах web.config для обоих сайтов элементы и являются одинаковыми и имеют следующий вид (за исключением конфиденциальной информации)

У кого-нибудь есть идеи, почему это может не сработать? Я разделяю проверку подлинности с помощью форм на 2 сайтах, и это прекрасно работает. Буду признателен за любую помощь или идеи!

Большое спасибо

Dave

Ответы [ 2 ]

7 голосов
/ 17 марта 2010

Похоже, у нас возникла проблема в том, что домен cookie-файлов сеанса устанавливался по-разному в двух приложениях. Это означало, что каждое приложение генерировало свой собственный идентификатор сессии.

Мы добавили <httpCookies domain=".ourdomain.co.uk" /> к нашему web.config, и это, кажется, решило это. Спасибо за помощь, надеюсь, это поможет кому-то еще в будущем.

6 голосов
/ 08 марта 2010

Сохранять все данные сеанса на SQL-сервере, используя ID сеанса в качестве ключа. Затем используйте файл cookie, содержащий идентификатор сеанса, который указывает на .mydomain.com, чтобы он был доступен на обоих поддоменах.

Эта статья за 15 секунд охватывает тему и даже показывает методику обмена сеансами в совершенно разных доменах.

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