Я работаю над сайтом, который имеет требование для совместного использования сессии между cms приложением и приложением интернет-магазина на том же домене, например.
mydomain.com
и
store.mydomain.com
Я сделал некоторые успехи с ним, и это работает над моей локальной сборкой между
localhost/cms
и
localhost/store
В основном я сделал то, что предлагается в этой статье
и взломанный Хранимая процедура TempGetAppID для возврата того же идентификатора приложения (1). Это, кажется, работает, поскольку это создает сессии с идентификаторами как 'abv5d2urx1asscfwuzw3wp4500000001', который является тем, что я ожидал бы.
Моя проблема - то, что, когда я развертываю его на нашей тестовой среде, это создает новую сессию, когда я перешел между этими 2 сайтами. Таким образом, когда я запускаю сессию на cms сайте, если я перешел к хранилищу, он создает новую сессию. Они настраиваются как 2 различных веб-сайта в IIS7.
В web.config файлах и для сайтов, и для элементов оба то же и следующим образом (минус уязвимая информация)
Кто-либо получил идеи, почему это не могло бы работать? Я совместно использую Аутентификацию Форм через эти 2 сайта, и это хорошо работает. Любая справка или идеи значительно ценились бы!
Большое спасибо
Dave
Похоже, проблема заключалась в том, что домен cookie сеанса устанавливался по-разному в двух приложениях. Это означало, что каждое приложение генерировало собственный идентификатор сеанса.
Мы добавили
в наш web.config, и, похоже, проблема решена. Спасибо за помощь, надеюсь, это поможет кому-то еще в будущем.
Сохранять все данные сеанса на SQL-сервере, используя идентификатор сеанса в качестве ключа. Затем используйте файл cookie, содержащий идентификатор сеанса, указывающий на .mydomain.com
, чтобы он был доступен в обоих субдоменах.
В этой статье за 15 секунд рассматривается тема и даже демонстрируется метод обмена сеансами в совершенно разных доменах.