Прежде всего, я должен сказать, что эти «рекомендации» носят общий характер и не являются исключительными для iis-7.
В web.config под <system.web>
у вас либо <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="130" cookieless="false"/>
(для этого требуется служба сервера состояний сеанса ASP.NET, работающая на локальном хосте)
или <sessionState mode="InProc" timeout="130" cookieless="false"/>
.
Основное отличие состоит в том, что в InProc данные о состоянии сеанса помещаются в сам процесс приложения. В другом случае хранилище выполняет другая служба, а ваше приложение просто опрашивает его, чтобы получить необходимые данные.
Используя оба (а также режим состояния сеанса sql-сервера), InProc является наименее надежным, но самым быстрым. Sql-сервер является самым надежным и самым медленным, а режим StateServer находится где-то посередине и ненадежен только в случае сбоя питания / системы. Сказав это, я должен сказать, что для сайта с низким количеством запросов снижение производительности незначительно.
Теперь мой опыт показал, что InProc довольно непредсказуем по своей стабильности; Раньше у меня была такая же проблема с тобой. Мне удалось повысить стабильность приложения, изменив настройки пула приложений. Я полностью устранил проблему, переключившись на SessionState (что также позволяет завершать работу приложения и не терять данные о состоянии сеанса).
Причины, по которым вы можете пострадать от стабильности приложения / сеанса:
IIS и пул приложений. Каждый виртуальный каталог веб-сайта назначается пулу приложений (по умолчанию «DefaultAppPool»), который имеет ряд настроек, среди которых вы определяете интервал, в течение которого процесс «перерабатывается», и, таким образом, сохраняет системные ресурсы. Если вы не измените настройки, приложение может активировать один из критериев для утилизатора процесса, что означает, что ваше приложение отключено
Antivirus.
В приложении ASP.NET при касании файла web.config (и любых дочерних файлов .config, от которых зависит приложение) происходит перезапуск приложения. Теперь есть случаи, когда антивирусная программа может касаться файла web.config (скажем, один раз в день?), И поэтому приложение перезапускается и данные сеанса теряются.
Плохая конфигурация
В частности, для проверки подлинности с помощью форм параметры и поведение, связанные со временем, всегда зависят от веб-сеанса, а сеанс аутентификации находится в рамках веб-сеанса.
Что я не знаю, так это то, что модуль проверки подлинности с помощью форм зависит только от домена сеанса или же он также помещает данные в область приложения. Если второе имеет место, то вам, возможно, придется отключить все параметры утилизации в пуле приложений, а также повторно проверить конфигурацию / антивирус и определить, кто хранит данные сеанса.