Состояние сеанса SQL Server, веб-ферма и конфигурация IIS

<час>
static void Main()
{
#if DEBUG
                // Run as interactive exe in debug mode to allow easy
                // debugging.

                var service = new MyService();
                service.OnStart(null);

                // Sleep the main thread indefinitely while the service code
                // runs in .OnStart

                Thread.Sleep(Timeout.Infinite);
#else
                // Run normally as service in release mode.

                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[]{ new MyService() };
                ServiceBase.Run(ServicesToRun);
#endif
}
6
задан Jonas Stawski 30 November 2009 в 22:45
поделиться

1 ответ

AppId используется во время создания SessionId, чтобы избежать конфликтов от одного приложения к другому. Он создается путем вычисления хэша пути к приложению IIS.

В вашей среде поток может быть примерно таким:

  1. Сервер A создает идентификатор сеанса, устанавливает его в cookie и сохраняет некоторые данные в соответствующем session (строка в ASPStateTempSessions). Столбец идентификатора сеанса создается путем объединения идентификатора сеанса с идентификатором приложения.
  2. Сервер B получает запрос с уже существующим идентификатором сеанса и использует его для поиска связанных данных сеанса из таблицы ASPStateTempSessions. Если идентификатор приложения отличается, сгенерированный ключ также будет другим.

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

6
ответ дан 17 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

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