Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 19080|Odpowiedź: 3

[ASP.NET] ASP.NET StateServer, który przechowuje sesję

[Skopiuj link]
Opublikowano 18.11.2017 21:20:15 | | | |

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.




Poprzedni:Prosta refaktoryzacja pakietów dla Autofac Container
Następny:Stany sesji nie mogą być serializowane. W trybie "StateServer" lub "SQLServer"...
 Ziemianin| Opublikowano 18.11.2017 21:21:34 |
ASP.NET moduł stanu sesji <Sessionstate>określa cztery możliwe wartości tagu w pliku Web.config < właściwości mode tagu pod tagiem System.web>: Off, Inproc StateServer oraz SQLserver.    1 Inproc to domyślne ustawienie
Umożliwia sesje "cookieless" oraz przechowywanie danych sesji poza serwerem. ASP.NET moduł stanu sesji jest skonfigurowany w pliku Web.config w następujący sposób:
 Ziemianin| Opublikowano 26.02.2018 11:02:52 |
Moja własna konfiguracja


 Ziemianin| Opublikowano 10.07.2022 21:58:32 |
ASP.NET 4 obecnie oferuje wbudowane wsparcie dla kompresji danych sesji w celu przechowywania sesji poza procesem. Aby włączyć tę funkcję, wystarczy ustawićcompressionEnabledWłaściwość jest ustawiona na "prawdziwą", co pokazano w poniższym fragmencie kodu:



ASP.NET użyje klasy .NET Framework System.IO.Compression.GZipStream do kompresji (i dekompresji) stanu sesji.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com