Как поддержать тот же идентификатор сессии через несколько веб-приложений в ASP.NET

У меня есть две идентичных установки приложений на IIS на различных виртуальных каталогах (я сделал некоторое обходное решение, чтобы гарантировать, чтобы у них обоих было то же имя приложения). Существует ли способ совместно использовать идентификатор сессии через два веб-приложения asp.net?

Так как я храню сессию в StateServer, они должны оба получать те же данные сессии, однако, другой идентификатор сессии создается каждый раз, я иду от приложения a до applicatino b. Разве этого не произошло бы в сценарии выравнивания нагрузки также? Где, когда я перехожу к www.test.com, это перенаправило бы тот запрос к серверу a, и затем если бы я поразил его снова, то это перешло бы к серверу b, но так как это - другое веб-приложение, это создало бы новый идентификатор сессии?

7
задан Keyvan Sadralodabai 9 July 2010 в 19:03
поделиться

2 ответа

Сначала настройте элемент sessionState в файле web.config для использования cookieName = "SOME_COOKIE_NAME_HERE" в обоих приложениях.

Затем просто убедитесь, что URL-адреса имеют один и тот же TLD (домен верхнего уровня), то есть app1.mydomain.com и app2.mydomain.com, и вы сможете обработать событие Session_Start в Global.asax и поместить это code:

    HttpCookie cookie = new HttpCookie("SOME_COOKIE_NAME_HERE", Session.SessionID.ToString());
    cookie.Expires = DateTime.Now.AddMinutes(20);
    cookie.Domain = "*.mydomain.com";
    cookie.HttpOnly = true;
    Response.SetCookie(cookie);

Также я бы порекомендовал вам использовать SqlServer SessionState Mode.

7
ответ дан 7 December 2019 в 07:39
поделиться

Ваша цель - разделить состояние сеанса между двумя приложениями, а не только идентификатор сеанса? Я считаю, что StateServer также использует путь к приложению, а также идентификатор сеанса для хранения данных, поэтому, даже если идентификаторы сеанса были такими же, вы все равно не смогли бы поделиться данными. Возможно, вам придется написать свой собственный модуль сеанса.

У веб-приложений с балансировкой нагрузки нет этой проблемы, потому что путь к приложению одинаков для всех членов кластера.

-1
ответ дан 7 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: