Несколько мыслей, прежде чем я перейду к возможному решению, почему ваши логины заканчиваются. Во-первых, cookie FormsAuthentication и SessionState полностью разные. У вас может быть один или другой, или оба, или нет. В результате тайм-ауты для этих двух элементов также не связаны.
Файл cookie FormsAuthentication является зашифрованным файлом cookie, который содержит некоторую базовую информацию, такую как имя пользователя и значение срока действия. Приложение .NET использует этот файл cookie, как только пользователь прошел аутентификацию, чтобы узнать, разрешен ли пользователь для определенных ресурсов.
Что контролирует шифрование и дешифрование файла cookie FormsAuthentication, является MachineKey для этого веб-приложения в IIS. MachineKey - это набор ключей, используемых для шифрования и дешифрования файла cookie. По умолчанию веб-приложение в IIS настроено на автоматическое создание машинного ключа. Это означает, что при запуске приложения генерируется случайный машинный ключ. Если приложение перезагружается, вы получаете новый машинный ключ. Кроме того, если вы размещаете на общем поставщике, веб-хост, как правило, балансирует нагрузку на приложение, то есть размещается более чем на одном сервере. Каждый из этих серверов автоматически генерирует машинный ключ.
Если ваше веб-приложение находится в режиме балансировки нагрузки, каждый компьютер в веб-ферме не может расшифровать зашифрованный файл cookie другого. Это приведет к появлению «выхода из системы». Примером этого является вход в систему на веб-сервере A, затем последующий запрос отправляется на веб-сервер B. Веб-сервер B не передает машинный ключ с веб-сервером A и не может расшифровать файл cookie, отправив пользователя обратно на страницу входа в систему.
Решение состоит в том, чтобы определить раздел MachineKey в вашем web.config, чтобы каждый экземпляр IIS использовал те же ключи, а также, если пул приложений перерабатывается, у вас все еще есть один и тот же машинный ключ.
Вот бы example machine key, что вы могли бы разместить в вашем web.config
<system.web>
<machineKey validationKey="EBC1EF196CAC273717C9C96D69D8EF314793FCE2DBB98B261D0C7677C8C7760A3483DDE3B631BC42F7B98B4B13EFB17B97A122056862A92B4E7581F15F4B3551"
decryptionKey="5740E6E6A968C76C82BB465275E8C6C9CE08E698CE59A60B0BEB2AA2DA1B9AB3"
validation="SHA1" decryption="AES" />
</system.web>
Дополнительные мысли, что ваш выдох в вашей web.config (2880), и что вы на самом деле установка срока действия, чтобы быть (120) не совпадают. Вы можете захотеть, чтобы они оба соответствовали друг другу.
Я не понимаю, почему люди путаются с тайм-аутом cookie проверки подлинности и тайм-аутом сеанса сервера. Они представляют собой два разных тонких слова ... mate – Shaz
, вы говорите своему серверу, чтобы истечь время пользователя через 120 минут и на другая рука говорит браузеру cookie, чтобы получить билет на проверку подлинности для 2280 ... очевидно, что билет истекает после 120, а пользователь получает тайм-аут ... пока пользователь все еще держит предыдущий билет аутентификации. – Shaz
Вы явно определили свой «MachineKey» в своей сети. конфиг? – Tommy