Як встановити тайм-аут сеансу в web.config


179

Я дуже намагався, але не можу знайти рішення, як встановити значення тайм-ауту для сеансу під час сеансу для веб-програми ASP.Net.

Я використовую VSTS 2008 + .Net 3.5 + C #. Ось що я написав сам, щоб встановити час очікування на 1 хвилину, чи правильно?

Я писав у розділі system.web в web.config

<sessionState timeout="1" mode="InProc" />

5
Правильний спосіб визначення тайм-ауту. Чи є у вас якісь проблеми?
Дарин Димитров

7
Ви знаєте, що це означає, що він закінчиться через 1 хвилину бездіяльності, а не через 1 хвилину від початку? Я гадаю, що якщо ви ставите це запитання і правильно ввели тайм-аут, ви можете ввести в оману того, як він працює.
Іван Златанов

1
Мені потрібно встановити неактивний час, це саме те, що мені потрібно. Дякую Іване!
George2

ЛОЛ! Я б не рекомендував встановлювати час очікування лише на 1 хвилину. Це вб'є корисність!
Брайан Маккарті

3
Я повністю розумію необхідність короткого періоду очікування. У моєму випадку це перевірити зручність роботи сайту, якщо сеанс закінчується, і як він реагує, як тільки користувач повернеться. Важко перевірити, що під час налагодження також, якщо час очікування сеансу не відбудеться швидко
Бретт Вебер

Відповіді:


323

Якщо ви хочете встановити час очікування на 20 хвилин, використовуйте щось подібне:

    <configuration>
      <system.web>
         <sessionState timeout="20"></sessionState>
      </system.web>
    </configuration>

16
20 хвилин чи години? (timeout = "20")
Мухаммед Авайс

21
Конфіг констатує тайм-аут у хвилинах, так що 20 хвилин
Вольфвір

50

Значення, яке ви встановлюєте в timeoutатрибуті, є одним з правильних способів встановити значення тайм-ауту сеансу.

В timeoutатрибут визначає кількість хвилин сеанс може бути неактивним до його відмовилися. Типовим значенням цього атрибута є 20.

Призначаючи цьому атрибуту значення 1, ви встановили, що сеанс буде припинено через 1 хвилину після його простою.

Щоб перевірити це, створіть просту сторінку aspx і напишіть цей код у події Page_Load,

Response.Write(Session.SessionID);

Відкрийте браузер і перейдіть на цю сторінку. Ідентифікатор сеансу буде надруковано. Зачекайте хвилину, а минуло оновлення. Ідентифікатор сеансу зміниться.

Тепер, якщо я гадаю, правильно, ви хочете, щоб ваші користувачі вийшли з системи, як тільки сеанс закінчився. Для цього ви можете встановити сторінку входу, яка перевірить облікові дані користувачів, і створити змінну сеансу, як ця -

Session["UserId"] = 1;

Тепер вам доведеться перевірити на кожній сторінці цю змінну, як ця -

if(Session["UserId"] == null)
    Response.Redirect("login.aspx");

Це приклад з голими кістками, як це буде працювати.

Але для того, щоб зробити свої продукти якості безпечними програмами, використовуйте класи " Ролі та членство", що надаються ASP.NET. Вони забезпечують автентифікацію на основі форм, яка набагато надійніше звичайної аутентифікації на основі сесії, яку ви намагаєтеся використовувати.


Прекрасна порада ... Обов’язково спочатку встановіть змінну Session перед тестуванням за допомогою Response.Write (Session.SessionID); інший розумний він буде оновлюватися новим посвідченням кожного разу, коли ви оновите.
Кріс Катіньяні

1

Якщо ви використовуєте MVC, ви ставите це у файл web.config у директорії Root веб-програми, а не web.config у каталог Views. Він також повинен бути в вузлі system.web, а не так, як George2 заявив у своєму запитанні: "Я писав під розділом system.web в web.config"

Значення параметра тайм-ауту представляє хвилини.

Є й інші атрибути, які можна встановити в елементі sessionState. Інформацію ви можете знайти тут: docs.microsoft.com sessionState

<configuration>
   <system.web>
      <sessionState timeout="20"></sessionState>
   </system.web>
</configuration>

Потім ви можете зафіксувати початок нового сеансу у файлі Global.asax, додавши наступний метод:

void Session_Start(object sender, EventArgs e)
{
    if (Session.IsNewSession)
    {
        //do things that need to happen
        //when a new session starts.
    }
}

0

Використовуйте це в web.config:

<sessionState 

  timeout="20" 
/>

30
Вам не потрібна більшість атрибутів, які ви перераховуєте, просто timeoutнасправді. stateConnectionStringі sqlConnectionStringігноруються коли mode="InProc", а значення для modeта cookielessвстановлюються за замовчуванням. Отже, це справді стримує відповідь Вольфвірда.
arcain

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.