Тайм-аут сеанса в ASP.NET

Я запускаю приложение ASP.NET 2.0 в IIS 6.0. Я хочу, чтобы время ожидания сеанса составляло 60 минут, а не 20 минут. Я сделал следующее

  • набор в web.config
  • Установить тайм-аут сеанса до 60 минут в настройках менеджера IIS/Свойства веб-сайта/Параметры конфигурации ASP.NET
  • Установите время ожидания простоя до 60 минут в свойствах/производительности пула приложений.

Я все еще получаю таймаут сеанса через 20 минут. Что-нибудь еще мне нужно сделать?

Ответ 1

Используете ли вы проверку подлинности с помощью форм?

Аутентификация форм использует свое собственное значение для тайм-аута (по умолчанию 30 мин). Тайм-аут проверки формы отправит пользователя на страницу входа, пока сеанс все еще активен. Это может выглядеть так, как это приносит ваше приложение при сбое сеанса, что облегчает его слияние с другим.

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

    <sessionState timeout="60"  />
</system.web>

Установка тайм-аута форм на что-то меньшее, чем таймаут сеанса, может предоставить пользователю окно, в которое можно вернуться в систему, не потеряв никаких данных сеанса.

Ответ 2

Используйте следующий код в файле web.config. Здесь время сеанса по умолчанию составляет 80 минут.

<system.web>
 <sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>

Используйте следующую ссылку для таймаута сеанса со всплывающим предупреждением.

Пример времени ожидания сеанса

FYI: приведенные выше примеры выполняются с помощью всплывающего меню devexpress, поэтому вам нужно настроить/заменить всплывающее меню devexpress с помощью обычного всплывающего меню. Если вы используете devexpress, вам не нужно настраивать

Ответ 3

Я не знаю о web.config или IIS. Но я считаю, что из кода С# вы можете сделать это как

Session.Timeout = 60; // 60 is number of minutes

Ответ 4

Это обычно все, что вам нужно сделать...

Вы уверены, что через 20 минут причина, по которой сеанс будет потерян, не работает, хотя...

Есть много причин, почему сеанс может быть очищен. Вы можете включить ведение журнала событий для IIS и затем использовать средство просмотра событий, чтобы увидеть причины, по которым сеанс был очищен... вы можете обнаружить, что это возможно по другим причинам?

Вы также можете прочитать документацию для сообщений о событиях и связанный с ней таблица событий.

Ответ 5

У вас есть что-нибудь в файле machine.config, который может вступить в силу? Установка тайм-аута сеанса в web.config должна переопределять любые параметры в IIS или machine.config, однако, если у вас есть файл web.config где-то в подпапке вашего приложения, этот параметр будет переопределять тот, который находится в корневой папке вашего приложения.

Кроме того, если я правильно помню, тайм-аут в IIS влияет только на страницы .asp, а не на .aspx. Вы уверены, что ваш код сеанса в web.config верен? Он должен выглядеть примерно так:

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>

Ответ 6

В моей ситуации это был Application Pool. Он установлен для перезапуска в режиме ожидания для xx mins. Когда я устанавливаю его для не перезапуска, он, кажется, использует значение из Web Config.

Ответ 7

Если вы используете аутентификацию, я рекомендую добавить в файл web.config следующее.

В моем случае пользователи перенаправляются на страницу входа в систему по истечении времени ожидания:

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

Ответ 9

Значение тайм-аута сеансов IIS предназначено только для классических приложений .asp, это контролируется при настройке IIS. В вашем случае Для приложений ASP.NET применяется только значение времени ожидания, указанное в web.config.

Ответ 10

Вы можете найти настройки здесь в IIS:

Настройки

Его можно найти на уровне сервера, уровне веб-сайта или уровне приложения под "ASP".

Я думаю, вы можете установить его на уровне web.config. Пожалуйста, подтвердите это сами.

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>

Ответ 11

если вам нужен тайм-аут сеанса для веб-сайта, чем удалить

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>
тег

из файла web.config.

Ответ 12

Поскольку ASP.Net core 1.0 (vNext или другое имя используется для него), сеансы выполняются по-разному. Я изменил значение тайм-аута сеанса в Startup.cs, void ConfigureServices, используя:

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

Или, если вы хотите использовать файл appsettings.json, вы можете сделать что-то вроде:

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));

Ответ 13

Свойство Timeout указывает период времени, назначенный для объекта Session для приложения, в минутах. Если пользователь не обновляет или не запрашивает страницу в течение периода ожидания, сеанс заканчивается.

IIS 6.0: минимальное допустимое значение - 1 минута, а максимальное значение - 1440 минут.

Session.Timeout = 600;

Ответ 14

После изменения значения тайм-аута сеанса в IIS, пожалуйста, перезапустите IIS. Для этого перейдите в командную строку. Введите IISRESET и нажмите enter.