ASP.NET -Различный SessionId на разных серверах, когда сеанс хранится в SQL Server

Я управляю общим состоянием сеанса на двух производственных веб-серверах, используя базу данных SQL Server.
Недавно я понял, (И я почти уверен, что раньше )такого не было, что сессия на самом деле не разделяется при переходе с сервера на сервер.

На обоих серверах работает один и тот же веб-сайт в одном домене, и они балансируются с помощью аппаратного балансировщика нагрузки. Оба работают под IIS7. И на обоих серверах запущена служба состояния ASP.NET.

При проверке заголовков HTTP и перекрестных ссылок с захватами профилировщика SQL я обнаружил, что, по моему мнению, может быть проблемой.

Значение SessionId в моих файлах cookie представляет собой строку из 24 символов, например:y4hfairc2xbwlupkdsqpv0nz

Идентификатор сеанса, полученный базой данных ASPStateи сохраненный там, длиннее и имеет специфичный для сервера 8-символьный постфикс. например. 2476b033или 2b7731d2, которые одинаковы для всех сеансов, хранящихся в базе данных.
Таким образом, SessionID выглядят как:y4hfairc2xbwlupkdsqpv0nz2476b033илиy4hfairc2xbwlupkdsqpv0nz2b7731d2

Очевидно, из-за этого сеанс не является общим, и каждый сервер поддерживает свое собственное состояние сеанса.

Кто-нибудь, использующий аналогичную конфигурацию, мог сталкиваться с этим раньше?

Спасибо

обновление

Оказывается здесь:Идентификатор сеанса, сохраненный в SQL Server, отличается от созданного в среде выполнения asp.net тем, что дополнительные символы являются идентификатором приложения IIS. Теперь мне нужно выяснить, как изменить его, чтобы оба сервера совпадали. Пока не повезло.
Кто угодно?

5
задан Community 23 May 2017 в 12:09
поделиться