nandakishoreroyal Ответов: 1

Общий доступ к одному сеансу между несколькими веб-приложениями, размещенными в разных службах IIS


Сеанс совместного использования Iam в одной базе данных. Использование sessionState="SQLServer".

Он будет работать нормально, если я размещу разные приложения в одном и том же IIS.

Iam хостинг в разных IIS, я не могу получить сеанс.

SessionId создается по-разному для каждого приложения.

Я получил решение с помощью модифицированного web.config и процедуры. Я разместил два приложения в одном и том же IIS, его рабочий сеанс отлично работает. Но я разместил первое приложение на одном веб-сервере, а второе приложение-на другом IIS, к которому сеанс не используется.
Был ли у вас опыт в этом деле?

Что я уже пробовал:

Я попытался разместить приложения в wwwroot.
Я попробовал дать то же самое имя приложения в переменной sessionState.

Mohibur Rashid

Рассматривали ли вы возможность использования сессионного сервера?

nandakishoreroyal

Значит?

F-ES Sitecore

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

W∴ Balboos, GHB

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

Данные могут передаваться, например, через URL-адрес между системами.

Nathan Minier

Уже существует классификация технологий под названием SSO (Single Sign On). Подумайте о том, чтобы выбрать решение SSO, например Active Directory с Kerberos, а не пытаться реализовать систему, в которой олицетворение пользователя было бы тривиальным.

1 Ответов

Рейтинг:
12

Maciej Los

Если я вас хорошо понимаю, вы пытаетесь настроить базу данных MS SQL Server для хранения информации о состоянии сеанса. Если да, то, пожалуйста, выполните следующие действия отсюда: ASP.NET состояние сеанса с помощью SQL Server In-Memory OLTP | SQL Database Engine Blog[^]

Кажется, что одна из самых важных вещей, это:

Примечание:

Чтобы настроить режим SQLServer для веб-фермы, выполните следующие действия: в файле конфигурации для каждого веб-сервера задайте атрибут sqlConnectionString элемента sessionState, указывающий на одну и ту же базу данных SQL Server. Путь для того, чтобы ASP.NET приложение в МЕТАБАЗЕ IIS должно быть идентичным на всех веб-серверах, совместно использующих состояние сеанса в базе данных SQL Server. (...)

Если вы укажете доверенное соединение с вашим SQL-сервером в файле конфигурации использование атрибута sqlConnectionString элемента sessionState, объекта sessionstatemodule будет подключаться к SQL Server с помощью интегрированной системы безопасности SQL сервера . Соединение будет произведено с помощью ASP.NET идентификатор процесса или учетные данные пользователя, предоставленные для элемента конфигурации идентификатора, если они существуют. Вы можете указать, что вместо этого будет использоваться олицетворенное удостоверение IIS, указав <identity impersonate="true" /> и установка useHostingIdentity атрибут элемента конфигурации sessionState to false. Для получения дополнительной информации о ASP.NET идентификация процесса, см. Настройка ASP.NET идентичность процесса[^] и ASP.NET олицетворение[^].

Источник: Режимы Состояния Сеанса | Microsoft Docs[^]


Для получения более подробной информации, пожалуйста, смотрите:
ASP.NET общие сведения о состоянии сеанса | Майкрософт документы[^]