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

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

  1. Установить <sessionState timeout="60"></sessionState> в web.config.
  2. Установите время ожидания сеанса до 60 минут в диспетчере IIS / свойства веб-сайта / параметры конфигурации ASP.NET.
  3. Установите время простоя до 60 минут в свойствах / производительности пула приложений.

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

16.03.2009 01:50:48
Пожалуйста, предоставьте информацию о том, как вы измерили 20 минут. Давайте будем уверены, что 20 минут - это тайм-аут сеанса, а не какой-то другой.
John Saunders 16.03.2009 01:54:17
Пожалуйста, отметьте качественные ответы как принятые, используя галочку рядом со стрелками вверх / вниз
Brian Webster 18.01.2013 01:59:38
Восемь лет спустя правильный ответ до сих пор не принят.
Nathan 12.12.2017 21:52:25
Уточните, что вы подразумеваете под диспетчером IIS / Свойства веб-сайта / Параметры конфигурации ASP.NET. Шаг за шагом, что вы изменили в IIS?
niico 30.01.2019 12:13:15
15 ОТВЕТОВ

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

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

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

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

8
4.07.2015 19:03:41

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

Session.Timeout = 60; // 60 is number of minutes
41
14.11.2017 15:22:25
Будет ли это только корректировать время ожидания текущего сеанса? Или это отрегулирует время ожидания для всего приложения?
Johncl 27.08.2012 07:32:39
Ничто в документации не указывает на то, что настройки Session.Timeoutотличаются от использования web.config или IIS, поэтому я предполагаю, что это для всего приложения.
Drasive 28.07.2015 10:20:01
Я думаю, что @Drasive имеет право, но это должно быть подтверждено, по крайней мере, двумя отдельными подключенными клиентами к серверу и проверить тайм-аут простоя.
QMaster 28.03.2017 11:53:33

Есть ли у вас что-нибудь в 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"
/>
8
16.03.2009 03:20:23

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

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

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

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

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

273
16.03.2009 12:04:39
@ Unbreakable через несколько минут.
Word Rearranger 26.10.2018 17:25:07

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

-2
8.12.2010 05:53:06
Редактирование файла web.config автоматически приводит к сбросу IIS.
Timothy Gonzalez 24.02.2017 22:37:38

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

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

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

Пример тайм-аута сеанса

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

42
20.03.2015 15:08:47
ложь без печенья?
Kiquenet 7.12.2018 08:08:46
@Kiquenet, если вы установите cookieless в true, то ваш sessionId будет встроен в URL, что представляет собой серьезную угрозу безопасности. ASP.NET Framework вставляет уникальный URL-адрес в URL-адрес, вы можете проверить это, отключив cookie-файл или установив для атрибута cookie-файла значение true, как вы это сделали. Согласно MSDN, по умолчанию значение SessionID хранится в файле cookie сеанса с неограниченным сроком действия в браузере, но если вы укажете cookieless = "true", тогда ASP.NET поддерживает состояние сеанса без cookie, автоматически вставляя уникальный идентификатор сеанса в URL страницы ,
Hamza Khanzada 28.08.2019 11:00:11

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

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

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>
3
2.12.2015 14:35:46
Я получил ошибку здесь <authentication mode = "Forms"> после того, как я
Lst Patrick 10.08.2015 09:45:02

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

8
23.10.2013 11:01:17

если вы хотите тайм-аут сеанса для сайта, чем удалить

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

тег из файла web.config.

0
29.02.2016 13:09:24

Начиная с 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"]));
2
26.05.2016 08:38:25

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

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

Session.Timeout = 600;
-1
18.09.2016 13:26:41

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

1
26.01.2017 19:28:08
Как насчет тайм-аута пула приложений IIS?
SteveCav 8.02.2019 00:36:30

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

настройки

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

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

<configuration>
   <system.web>

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

   </system.web>
</configuration>
2
22.02.2017 23:33:40
Также в Global.asax?
Kiquenet 7.12.2018 08:06:53

https://usefulaspandcsharp.wordpress.com/tag/session-timeout/

<authentication mode="Forms">
  <forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="60" slidingExpiration="true" />
</authentication>

<sessionState mode="InProc" timeout="60" />
3
29.05.2017 20:55:47

Время ожидания сеанса по умолчанию определено в IIS до 20 минут.

Следуйте приведенным ниже процедурам для каждого сайта, размещенного на веб-сайте IIS 8.5.

Настройка времени ожидания IIS

Откройте диспетчер IIS 8.5.

Нажмите на название сайта.

Выберите «Редактор конфигурации» в разделе «Управление».

В раскрывающемся списке «Раздел:» в верхней части редактора конфигурации найдите «system.web / sessionState».

Установите «тайм-аут» на «00:20:00 или меньше», используя наименьшее возможное значение в зависимости от приложения. Допустимые значения: 5 минут для приложений с высокими значениями, 10 минут для приложений со средними значениями и 20 минут для низких -значения приложений.

На панели «Действия» нажмите «Применить».

1
10.12.2019 13:24:28