Вы можете разделить состояние сеанса между двумя серверами, используя следующие способы:
1) Использование сеанса SQLServer:
В этом режиме состояния сеанса объекты сеанса сохраняются в SQL Сервер.
Преимущество использования этого метода заключается в том, что все данные в сеансе будут храниться вместе в другом месте, или вы можете сказать централизованное местоположение на SQL Сервере, чтобы заставить его работать, мы просто необходимо настроить SQLServer для хранения данных сеанса.
2) Использование сеанса StateServer:
В этом режиме состояния сеанса объекты сеанса хранятся на отдельном сервере, обработанном Windows Служба работает на этом сервере.
Преимущество использования этого метода заключается в том, что все данные в сеансе будут храниться вместе в другом месте. В этом случае сервер, обрабатываемый службой Windows, называется «aspnet_state»; это станет централизованным местом для данных сеанса. Чтобы заставить его работать, нам просто нужно настроить StateServer для хранения данных сеанса.
когда вы разделяете состояние сеанса между двумя серверами, убедитесь, что служба состояний ASP. NET установлена на всех серверах и настройки приведены ниже:
Кроме того, по умолчанию доступ к услуге невозможен. Чтобы включить эту опцию, необходимо установить для следующего раздела реестра значение 1: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ aspnet_state \ Parameters \ AllowRemoteConnection. Не забудьте перезапустить службу состояния asp. net после изменения ключа реестра.
Необходимо объявить параметры управления сеансом в узле system.web. Пример:
<sessionState mode="StateServer" stateConnectionString="tcpip=machinename:42424">
</sessionState>
Если вы хотите использовать тип сервера SQL, этот раздел может выглядеть следующим образом:
<sessionState mode="SQLServer" allowCustomSqlDatabase="true"sqlConnectionString="the connection string name to the server">
</sessionState>
Где SQL Строка подключения относится к имени строки подключения в разделе connectionStrings файла web.config, в котором содержатся сведения о таблице состояний. Сама строка подключения может принимать следующий формат:
<add name="ASPStateConnectionString" connectionString="Data Source=[DB machine name where state DB is stored];Initial Catalog=ASPState;User ID=[db admin user name];Password=[db admin password]"providerName="System.Data.SqlClient" />
нам также нужно добавить машину и ключ проверки в узле system.web, который может выглядеть примерно так:
<machineKey
validationKey="some long hashed value"
decryptionKey="another long hashed value"
validation="SHA1"/>
Значением по умолчанию для ключа проверки является AutoGenerate, который точно соответствует названию: ключ будет автоматически сгенерирован IIS. Режим генерации по умолчанию для ключа дешифрования - IsolateApps. Он генерирует уникальный ключ для каждого приложения, используя идентификатор приложения.
Нам нужен этот общий машинный ключ, так как мы хотим запустить его на нескольких машинах, поэтому мы не хотим, чтобы машинный ключ генерировался автоматически.
Для получения дополнительной информации вы можете обратиться по ссылкам ниже:
https://dotnetcodr.com/2013/07/01/web-farms-in-net-and-iis-part-5-session-state-management/
https://www.c-sharpcorner.com/UploadFile/25c78a/load-balancing-session-state-configuration/