HttpContext.Session равен нулю за маршрутизацией запросов приложений (ARR)
Я борюсь со следующей проблемой. Настройка:
- ASP.NET веб-приложение на.NET 4.
- Государственная сессия Государственной службы.
- Три веб-сервера. Все три размещают веб-приложение. Один также действует как контроллер ARR.
Веб-сервер 1: Windows 2012. IIS 8. Служба состояний ASP.NET. ARR контроллер.
Веб-сервер 2: Windows 2012. IIS 8.
Веб-сервер 3: Windows Server 2008R2. IIS 7.5. ASP.NET 4.5.2 установлен.
При навигации / переключении между серверами Httpcontext.Session имеет значение null:
HttpContext context = HttpContext.Current;
if (context.Session == null)
{
CurrentLogger.Logger.Info("Context.Session is null");
}
Если мне повезет, и запрос перенаправляется на тот же сервер, он сохраняет сеанс.
Сервер sessionState настроен так:
<sessionState mode="StateServer" stateConnectionString="tcpip=192.168.2.53:42424" cookieless="false" timeout="30" />
Я также установил ключ машины:
<machineKey validationKey="[xxxxx]" decryptionKey="[xxxx]" validation="SHA1" />
Я требую, чтобы все мои куки отправлялись только по SSL. Используя IIS, я вижу, что это не проблема. Авторизованные и сессионные куки отправляются всем веб-серверам.
Что может привести к тому, что мой сеанс будет нулевым между серверами?
1 ответ
Решение найдено здесь: /questions/8448083/otladka-problem-servera-sostoyanij-seansa-aspnet/8448098#8448098.
Чтобы поддерживать состояние сеанса на разных веб-серверах в веб-ферме, путь приложения веб-сайта (например, \LM\W3SVC\2) в метабазе Microsoft Internet Information Services (IIS) должен быть одинаковым для всех веб-сайтов. серверы в веб-ферме. Случай также должен быть таким же, потому что путь к приложению чувствителен к регистру.