Поскольку компания должна балансировать нагрузку на сервер, веб-проект развёртает по одному серверу на каждом из двух фронтенд-серверов (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, иначе сессия будет потеряна. |