Я борюсь со следующей проблемой. Настройка:
- Приложение веб-форм 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" />
Я требую, чтобы все мои файлы cookie отправлялись только через SSL. Используя ведение журнала IIS, я вижу, что это не проблема. Куки-файлы аутентификации и сеанса отправляются на все веб-серверы.
Что может привести к тому, что мой сеанс между серверами будет нулевым?