Общая аутентификация между двумя серверами
Я установил один и тот же сайт на двух серверах, расположенных за балансировщиком нагрузки. У меня есть следующее в моем файле web.config
<sessionState mode="SQLServer" cookieless="false" allowCustomSqlDatabase="true"
sqlConnectionString="Data Source=server;Initial Catalog=ASPState;Persist Security
Info=True;User ID=user;Password=password" timeout="2880" sqlCommandTimeout="10" />
Кажется, он работает, я вижу, как таблицы ASPState заполняются при входе в систему, однако я вижу, что, если я обновляюсь несколько раз после входа в систему, происходит переход назад и вперед между входом в систему и отсутствием входа в зависимости от того, на каком сервере я нажал. Я что-то пропустил?
Я использую стандартную аутентификацию webmatrix, встроенную в MVC 4.
2 ответа
Как объясняется в этом посте, вам необходимо иметь одинаковый идентификатор приложения на обоих серверах.
"Когда вы создаете приложения, которые вы ожидаете для совместного использования состояния сеанса, используя Sql Server, им нужен тот же идентификатор, настроенный в IIS. Это потому, что генерируемый идентификатор сеанса генерируется на основе идентификатора приложения. (Внутренне идентификатор приложения является чем-то вроде LM/W3SVC/1 Два сервера имели разные идентификаторы для каждого приложения в IIS. Решение заключается в том, чтобы изменить идентификатор в разделе "Управление веб-сайтом -> Расширенные настройки" на каждом сервере ".
ура
Это может быть связано с тем, что на ваших серверах есть разные MachineKeys или значение по умолчанию. И благодаря этому ваши куки-файлы аутентификации шифруются двумя различными способами.
Попробуйте установить machineKey в вашем файле web.config. Вот инструмент, который помогает генерировать machineKey http://aspnetresources.com/tools/machineKey