Какой тайм-аут сеанса используется в ASP.NET?

В ASP.NET вы можете установить время ожидания сеанса в нескольких местах:

веб.конфигурация:

<authentication mode="Forms">
    <forms loginUrl="Login" defaultUrl="Index" timeout="480"/>
</authentication>

<sessionState timeout="480"  />

И в ИИС.

Когда какой тайм-аут сеанса используется?


person Martijn    schedule 23.11.2011    source источник


Ответы (2)


 <forms loginUrl="Login" defaultUrl="Index" timeout="480"/>
  • это тайм-аут для файла cookie аутентификации, это означает, что после входа в систему у вас есть 480 минут, пока вы снова не будете перенаправлены на страницу входа (если вы используете скользящий срок действия, он немного изменится).

<sessionState timeout="480" />

  • это тайм-аут для объекта Session, поэтому, если у вас есть что-то сохраненное в Session["object"], это станет недоступным после 480 минут бездействия.
  • если время ожидания сеанса меньше времени ожидания входа в систему, вы можете получить NullReferenceException при доступе к Session["object"].
person misha    schedule 23.11.2011
comment
Срок действия сеанса истекает через 480 минут бездействия. - person Shadow Wizard Wearing Mask V2; 23.11.2011
comment
Thnx, а как насчет настроек IIS? - person Martijn; 23.11.2011
comment
Если вы изменяете в IIS, вы должны получить те же изменения в web.config, поэтому вам нужно сделать это только в одном месте, это то же самое. - person misha; 23.11.2011
comment
Какая настройка будет? Настройки в IIS или в web.config? И применяются ли настройки IIS к страницам aspx? - person Martijn; 23.11.2011
comment
Параметр IIS (состояние сеанса) аналогичен тегу ‹sessionState /› в файле web.config, который распространяется на все приложения, поэтому они будут применяться ко всем страницам. Я бы пошел на редактирование web.config, потому что это проще, и вы можете просто скопировать/вставить настройки с сайта. - person misha; 23.11.2011
comment
Thnx, но что произойдет, если для IIS установлено значение 20, а для web.config — 30? Какая настройка применяется? - person Martijn; 23.11.2011
comment
В IIS 7, если вы установите 20, он перезапишет web.config, а если вы измените его на web.config, он перезапишет IIS. Он берет информацию из того же места, что и web.config. В IIS 6 есть некоторые настройки, которые имеют приоритет над web.config, но для примера я их не нашел. - person misha; 23.11.2011

Поскольку вы не указали, какую версию IIS вы используете, но предполагаете, что это IIS7 или выше.

По сути, если вы определите явное значение в своей конфигурации, это то, что будет использоваться. В IIS 7 или выше установка этого значения через консоль IIS также обновит ваш файл конфигурации, в IIS 6 он использует метабазу.

Явная установка значения в файле конфигурации вашего собственного веб-сайта всегда будет переопределять значение, установленное в IIS, если только делегирование не было отключено для функции в applicationHost.config, что приведет к ошибке, если вы установите его локально.

Вы можете проверить это, создав пустой веб-сайт ASP.NET и развернув его в IIS. Вы увидите, что в его конфигурационном файле нет настройки времени ожидания сеанса, поэтому вы будете использовать настройку сервера. Обновите время ожидания сеанса до значения, отличного от значения по умолчанию в IIS, и теперь вы увидите, что определенный раздел был добавлен в ваш файл web.config, так что теперь это используемое значение.

Подробнее о настройках и управлении конфигурацией в IIS7+ здесь

person Darren Lewis    schedule 23.11.2011