Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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", что, конечно, нормально на веб-сервере, но при изменении состоянияConnectionString на 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 состояния включён, то лучше установить 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 — настройка по умолчанию
Он позволяет проводить сессии без файлов cookie, а также хранить данные сессий вне сервера. 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