Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 19080|Відповідь: 3

[ASP.NET] ASP.NET StateServer, який зберігає сесію

[Копіювати посилання]
Опубліковано 18.11.2017 21:20:15 | | | |

Оскільки компанія має балансувати навантаження на сервер, веб-проєкт розгортає по одному на кожному з двох фронтенд-серверів (web1 і web2). Але сесії використовуються у проєктах. Коли ви вперше потрапляєте на web1, можна переходити з web1 на web2, оскільки навантаження може зрости після web1.
Я знайшов багато інформації в Інтернеті, і також розумію конфігурацію у web.config
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="30" cookieless="AutoDetect" />
Багато прикладів в Інтернеті — stateConnectionString="tcpip=127.0.0.1:42424", що, звісно, нормально працює на веб-сервері, але коли ви змінюєте stateConnectionString на stateConnectionString="tcpip=192.168.1.82: 42424", виникають проблеми з обома фронтендами. Microsoft не надала конкретного рішення, а приклади на MSDN також вказують на 127.0.0.1. Пізніше, після дослідження та консультації з експертами, я зрозумів, що потрібно змінити реєстр сервера, який зберігає Sessin, ось він 192.168.1.82, і модифікація така:
Модифікувати реєстр:

HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"aspnet_state"Параметри



AllowRemoteConnection=1



Потім перезапустіть ASP.NET Державну службу



Конфігурація з'єднання така:

<sessionState mode="StateServer"
stateConnectionString="tcpip=192.168.1.200:42424" cookieless="AutoDetect"
тайм-аут="60" />

Після цього все було нормально після тестування. Сподіваюся, це допоможе іншим.
Є ще одна проблема, яку я досі не розумію. Сторінка wap, яку я створив, зберігатиме дані у ViewState на сторінці, і коли сторінка постійно оновлюється, дані на ній губляться, і час ніколи не перевищуватиме 20 хвилин. Я не знаю, чи це баг від Microsoft, чи щось інше, ця проблема не відображається на веб-сторінках. Рішення.
Після періоду дослідження найкраще використовувати менше viewstate на сторінці WAP, і якщо сервіс asp.net state увімкнений, то краще встановити cookieless на true, інакше сесія буде втрачена.




Попередній:Простий рефакторинг пакетів для Autofac Container
Наступний:Стани сесій не можна серіалізувати. У режимі «StateServer» або «SQLServer»...
 Орендодавець| Опубліковано 18.11.2017 21:21:34 |
ASP.NET модуль стану <Sessionstate>сесії визначає чотири можливі значення тега у файлі Web.config < властивість режиму тегу під тегом System.web>: Off, Inproc StateServer та SQLserver.    1 Inproc — це налаштування за замовчуванням
Він дозволяє проводити «безкукі» сесії, а також зберігати дані сесій поза сервером. ASP.NET модуль стану сесії налаштований у файлі Web.config наступним чином:
 Орендодавець| Опубліковано 26.02.2018 11:02:52 |
Моя власна конфігурація


 Орендодавець| Опубліковано 10.07.2022 21:58:32 |
ASP.NET 4 тепер забезпечує вбудовану підтримку стиснення даних сесій для зберігання позаробочих сесій. Щоб увімкнути цю функцію, просто встановітьcompressionEnabledВластивість встановлюється як «true», як показано у наступному фрагменті коду:



ASP.NET використовуватимуть клас .NET Framework System.IO.Compression.GZipStream для стиснення (і розпакування) стану сесії.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com