Ponieważ firma musi zbalansować serwer obciążeniowo, projekt webowy wdraża jeden na każdym z dwóch serwerów front-end (web1 i web2). Ale sesje są wykorzystywane w projektach. Gdy po raz pierwszy trafisz na web1, możesz przeskoczyć z web1 na web2, ponieważ obciążenie może wzrosnąć po web1. Znalazłem dużo informacji z Internetu i rozumiem też konfigurację w web.config <sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="30" cookieless="AutoDetect" /> Wiele przykładów w Internecie to stateConnectionString="tcpip=127.0.0.1:42424", co oczywiście jest w porządku na serwerze WWW, ale gdy zmienisz stateConnectionString na stateConnectionString="tcpip=192.168.1.82: 42424", pojawią się problemy z obiema frontendami. Microsoft nie podał konkretnego rozwiązania, a przykłady na MSDN również wskazują na 127.0.0.1. Później, po badaniach i konsultacjach z ekspertami, zdałem sobie sprawę, że muszę zmodyfikować rejestr serwera, który zapisuje Sessin, oto wersja 192.168.1.82, a modyfikacja wygląda następująco: Zmodyfikuj rejestr:
HKEY_LOCAL_MACHINE"SYSTEM"CurrentControlSet"Services"aspnet_state"Parametry
AllowRemoteConnection=1
Następnie wznow ASP.NET State Service
Konfiguracja połączenia wygląda następująco:
<sessionState mode="StateServer" stateConnectionString="tcpip=192.168.1.200:42424" cookieless="AutoDetect" timeout="60" />
Po tym było już w porządku po testach. Mam nadzieję, że pomoże innym. Jest jeszcze jeden problem, którego nadal nie rozumiem. Strona wap, którą stworzyłem, będzie miała dane zapisane w ViewState na stronie, a gdy strona jest ciągle odświeżana, dane w niej zostaną utracone, a czas nigdy nie przekroczy 20 minut. Nie wiem, czy to błąd Microsoftu, czy co, ten problem nie pojawia się na stronach internetowych. Rozwiązanie. Po okresie eksploracji najlepiej używać mniej viewstate na stronie WAP, a jeśli usługa asp.net state jest włączona, najlepiej ustawić cookieless na true, w przeciwnym razie sesja zostanie utracona. |