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

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

152 голосов
/ 16 марта 2009

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

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

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

Ответы [ 14 ]

266 голосов
/ 16 марта 2009

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

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

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

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

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

38 голосов
/ 14 декабря 2011

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

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

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

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

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

37 голосов
/ 16 марта 2009

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

Session.Timeout = 60; // 60 is number of minutes
8 голосов
/ 23 октября 2013

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

8 голосов
/ 16 марта 2009

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

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

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

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

7 голосов
/ 16 марта 2009

Есть ли в файле 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"
/>
3 голосов
/ 29 мая 2017

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 голосов
/ 19 марта 2013

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

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

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>
2 голосов
/ 23 февраля 2017

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

Settings

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

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

<configuration>
   <system.web>

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

   </system.web>
</configuration>
1 голос
/ 26 января 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...