Керування сеансами ASP.NET [Приклад]

⚡ Розумний підсумок

Керування сеансами ASP.NET дозволяє HTTP-застосунку без урахування стану запам'ятовувати дані користувача між запитами. У ньому пояснюється ViewState, об'єкт Session для зберігання пар ключ-значення, робочий приклад, режими стану сеансу, налаштування тайм-ауту та переваги стану сеансу.

  • 🌐 Бездержавний HTTP: HTTP не зберігає дані між запитами, тому ASP.NET додає механізми для збереження стану.
  • 🗂️ Стан перегляду: ViewState автоматично переносить значення керування з однієї сторінки на наступну.
  • 🔑 Об'єкт сесії: Сесія[“Ключ”] зберігає та отримує пари ключ-значення протягом усього життєвого циклу застосунку.
  • Режими стану: Стан сеансу може зберігатися в процесі (InProc), на сервері станів (StateServer), у SQL Server або у спеціальному сховищі.
  • 🇧🇷 Час вийшов: Тайм-аут sessionState у web.config контролює, як довго сеанс залишається активним.

Підручник з керування сеансами ASP.NET з прикладом

Керування сеансами ASP.NET

Протокол HTTP, на якому працюють усі веб-програми, є протоколом без стану. Без громадянства це просто означає, що інформація не зберігається від одного запиту до іншого.

Наприклад, якщо у вас була сторінка входу, яка має 2 текстові поля: одне для імені, а інше для пароля. Коли ви натискаєте кнопку «Вхід» на цій сторінці, програмі потрібно переконатися, що ім’я користувача та пароль передаються на наступну сторінку.

В ASP.Net це робиться різними способами. Перший спосіб – за допомогою концепції під назвою ViewState. Тут ASP.Net автоматично зберігає вміст усіх елементів керування. Він також гарантує його передачу на наступну сторінку. Це робиться за допомогою властивості під назвою ViewState.

Для розробника не ідеально змінювати щось у стані перегляду. Це тому, що він повинен оброблятися лише ASP.Net.

Об'єкт сеансу ASP.NET

Інший спосіб полягає у використанні об’єкта під назвою «Об’єкт сеансу». Об’єкт Session доступний протягом усього життєвого циклу програми. Ви можете зберігати будь-яку кількість пар ключ-значення в об’єкті Session. Отже, на будь-якій сторінці ви можете зберегти значення в об’єкті Session за допомогою наведеного нижче рядка коду.

Session["Key"] = value

Це зберігає значення в об'єкті Session, а частина «ключ» використовується для надання значення імені. Це дозволяє отримати значення пізніше. Щоб отримати значення, можна просто виконати наведену нижче інструкцію.

Session["Key"]

Приклад об’єкта сеансу ASP.NET

У нашому прикладі ми використовуватимемо об'єкт Session для збереження імені, введеного в текстове поле імені на сторінці. Потім ми отримаємо це значення та відповідно відобразимо його на сторінці. Додамо наведений нижче код до файлу Demo.aspx.cs.

Використовуйте об’єкт сеансу

protected void btnSubmit_Click(object sender, EventArgs e)
{
	Session["Name"] = txtName.Text;

	Response.Write(Session["Name"]);

	lblName.Visible = false;
	txtName.Visible = false;
	lstLocation.Visible = false;
	chkC.Visible = false;
	chkASP.Visible = false;
	rdMale.Visible = false;
	rdFemale.Visible = false;
	btnSubmit.Visible = false;
}

Code Пояснення:

  1. Перший рядок коду приймає значення текстового поля Name та зберігає його в об'єкті Session. Вказуючи код Session[“Name”], ми надаємо властивості ім'я під назвою “Name”. Вказуючи ім'я для властивості, стає легше отримати її пізніше.
  2. Наступний рядок коду отримує збережене значення з об’єкта Session. Потім він записує це значення через метод «Response.Write» назад до клієнта.
  3. Нарешті, ми робимо всі елементи керування на формі невидимими. Якщо ми цього не зробимо, усі елементи керування разом із значеннями наших відповідей відображатимуться разом.

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

вихід:

Використовуйте об’єкт сеансу

З результату ви можете побачити, що значення сеансу name було отримано та відображено в браузері.

Режими стану сеансу ASP.NET

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

режим Де зберігається стан Найкраще для
Вхідний процес У пам'яті веб-сервера (за замовчуванням) Односерверні програми; найшвидші, але втрачаються після перезапуску
StateServer Окремий процес служби стану ASP.NET Веб-ферми; витримує перезапуски програм
SQLServer База даних SQL Server Веб-ферми, що потребують міцного та масштабованого стану
індивідуальні умови Спеціальний постачальник, якого ви впроваджуєте Спеціалізовані магазини, такі як Redis
вимкненим Стан сеансу вимкнено Програми, яким не потрібні сеанси

InProc використовується за замовчуванням і є найшвидшим, але для розгортань із балансуванням навантаження StateServer або SQLServer забезпечує доступність сеансів на кількох серверах.

Як налаштувати тайм-аут сеансу в ASP.NET

Сеанс не триває вічно; він закінчується після певного періоду бездіяльності. Ви можете встановити цей тайм-аут у файлі web.config за допомогою елемента sessionState, де значення тайм-ауту вказується в хвилинах:

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

Ви також можете встановити це в коді за допомогою Session.Timeout = 30;Тайм-аут за замовчуванням становить 20 хвилин. Вибір коротшого тайм-ауту швидше звільняє пам’ять сервера та підвищує безпеку, тоді як довший тайм-аут довше дозволяє користувачам залишатися в системі.

Переваги та недоліки стану сесії

Стан сесії зручний, але він має компроміси, які слід зважити, перш ніж покладатися на нього серйозно.

переваги:

  • Простий у використанні для зберігання даних кожного користувача, таких як магазинping кошик або дані для входу.
  • Може зберігати складні об'єкти, а не лише рядки.
  • Дані зберігаються на сервері, тому вони безпечніші, ніж сховище на стороні клієнта.

Недоліки:

  • Режим InProc споживає пам'ять сервера та не масштабується в межах веб-ферми.
  • Дані сеансу втрачаються, коли сеанс закінчується або програма перезапускається (у режимі InProc).
  • Зберігання великих обсягів даних на користувача може негативно вплинути на продуктивність під великим навантаженням.

Поширені запитання

Так. Помічники ШІ можуть генерувати код для зберігання та зчитування значень сеансу, пропонувати правильний режим стану та записувати налаштування web.config. RevПерегляньте згенерований код, щоб переконатися, що він відповідає вашим потребам масштабованості та безпеки.

Так. Інструменти перевірки коду на основі штучного інтелекту можуть виявляти такі ризики, як фіксація сеансу, відсутність файлів cookie лише HTTPS або зберігання конфіденційних даних під час сеансу. Розглядайте результати як рекомендації та підтверджуйте виправлення за допомогою тестування безпеки перед розгортанням.

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

Ні. Кожен користувач отримує окремий сеанс, що ідентифікується унікальним ідентифікатором сеансу, що зберігається в cookie. Один користувач не може читати значення сеансу іншого користувача, тому для даних кожного користувача використовується значення «Сеанс».

Підсумуйте цей пост за допомогою: