Nie można wysłać żądania stanu sesji do serwera stanu sesji

122

Nasza witryna ma obecnie ten problem. Zasadniczo dzieje się to tylko wtedy, gdy klikniemy określone linki, w których pojawi się nowe okno.
Oto komunikat o błędzie, który otrzymujemy:

Nie można wysłać żądania stanu sesji do serwera stanu sesji.
Upewnij się, że usługa stanu ASP.NET jest uruchomiona, a porty klienta i serwera są takie same.
Jeśli serwer znajduje się na komputerze zdalnym, upewnij się, że akceptuje żądania zdalne, sprawdzając wartość HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ aspnet_state \ Parameters \ AllowRemoteConnection.
Jeśli serwer znajduje się na komputerze lokalnym i jeśli wcześniej wspomniana wartość rejestru nie istnieje lub jest ustawiona na 0, to ciąg połączenia serwera stanu musi zawierać „localhost” lub „127.0.0.1” jako nazwę serwera.

witryna docelowa:
Void MakeRequest (StateProtocolVerb, System.String, StateProtocolExclusive, Int32, Int32, Int32, Byte [], Int32, Int32, SessionNDMakeRequestResults ByRef)

to jest konfiguracja sieciowa, która zawiera tag stanu sesji:

<sessionState mode="StateServer" timeout="45" />

Sprawdziłem usługę stanową ASP.NET i jest ona obecnie uruchomiona i ustawiona na automatyczną

Ustawiłem rejestr podany w komunikacie o błędzie na 1, ale nadal nie działa.

Liam
źródło

Odpowiedzi:

305
  1. Start–> Narzędzia administracyjne -> Usługi
  2. Kliknij prawym przyciskiem myszy usługę stanową ASP.NET i kliknij „Start”

Dodatkowo możesz ustawić usługę na automatyczną, aby działała po ponownym uruchomieniu

Jamshid Hashimi
źródło
2
Czasami stwierdziłem, że działa tylko po kilkukrotnym ponownym uruchomieniu usługi stanowej ASP.NET!
Matthew Lock
2
Pracuj jak urok dla mnie
Arun
1
Dokładna nazwa to aspnet_state.
AmiNadimi
1
Twój mój bohater ... szukał tego tak długo.
G43beli
1
zaoszczędziłeś mi ... godzin przenosząc wszystkich ... i przybyłeś z tym prostym rozwiązaniem ... naprawdę ... dzięki
Roger Tello
26

Jeśli trzeba zmienić HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ aspnet_state \ Parameters \ AllowRemoteConnection 1, pamiętaj, aby ponownie uruchomić ten stan ASP.net usługę po zmianie parametru.

hikkemikke
źródło
@hikkenmikke Jak sprawdzić i zmienić HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ aspnet_state \ Parameters \ AllowRemoteConnection
Pomster
8

Sprawdź to:

stateConnectionString="tcpip=server:port"

jest poprawne. Sprawdź również, czy domyślny port ( 42424) jest dostępny, a Twój system nie ma firewallportu, który blokuje port w Twoim systemie

mas_oz2k1
źródło
1
Mam ten sam problem, zweryfikowałem, że moja usługa stanu sesji działa poprawnie, ale nadal otrzymuję ten sam komunikat. Oto moje ustawienie web.config: <sessionState mode = "StateServer" stateConnectionString = "tcpip = 127.0.0.1: 42424" sqlConnectionString = "data source = 127.0.0.1; Trusted_Connection = yes" cookieless = "false" timeout = "30" />
lstanczyk
5

Wpisz Services.msc w panelu uruchamiania okna uruchamiania systemu Windows. Wyświetli listę wszystkich usług systemu Windows w naszym systemie. Teraz musimy uruchomić usługę Asp .net State, jak pokazano na obrazku.wprowadź opis obrazu tutaj

Twój problem zostanie rozwiązany.

Rinoy Ashokan
źródło
Otrzymałem ten błąd po ponownym uruchomieniu z powodu Windows Update. Wykonałem te kroki i zadziałało. Dziękuję Ci.
Mauricio Arias Olave
4

Jeden z moich klientów miał ten sam problem. Podejmowane są następujące kroki, aby to naprawić.

 (1) Open Run. 

 (2) Type Services.msc

 (3) Select ASP.NET State Service

 (4) Right Click and Start it.
Hiren Parghi
źródło
2

Inną rzeczą do sprawdzenia jest to, czy masz włączoną Zaporę systemu Windows, ponieważ może to blokować port 42424.

jwanagel
źródło
2

Odkryłem, że niektórzy programiści z jakiegoś powodu definiują prywatne IP serwera poza IIS w nieoczekiwanej lokalizacji, jak niestandardowy plik konfiguracyjny (tj. Nie web.config) lub plik tekstowy. Może to spowodować niepowodzenie operacji wewnętrznej, nawet gdy usługa jest uruchomiona, porty nie są blokowane, klucze reg są poprawne itp.

W szczególności Kaseya umieszcza plik o nazwie serveripinternal.txt w katalogu głównym IIS na serwerze VSA. Widziałem tekst twojego błędu, gdy ktoś prowadzący własną instancję Kaseya zmienił wewnętrzny adres IP serwera. Serwer będzie osiągalny, IIS odpowie i pojawi się strona logowania - ale logowanie nie powiedzie się z powodu cytowanej wiadomości.

Kucyk na jedną nutę
źródło
1

Miałem ten sam problem, gdy część instalacji ASP.NET została uszkodzona. W takim przypadku sugerują uruchomienie aspnet_regiis -i -enable

Matthew Lock
źródło
we właściwej wersji asp.net. W moim przypadku było to 2
Ricardo Appleton
0

Niedawno napotkałem ten problem i żadne z proponowanych rozwiązań go nie rozwiązało. Problemem okazało się nadmierne wykorzystanie zbiorów danych przechowywanych w sesji. W kodzie wystąpił błąd, który spowodował 10-krotny wzrost rozmiaru sesji.

Na blogu msdn jest artykuł, który również o tym mówi. http://blogs.msdn.com/b/johan/archive/2006/11/20/sessionstate-performance.aspx

Użyłem funkcji do pisania niestandardowych komunikatów śledzenia, aby zmierzyć rozmiar danych sesji w aktywnej witrynie.

Ahmed Mansour
źródło
0

Nie najlepsza odpowiedź, ale i tak jest opcja:

Skomentuj podaną linię w pliku web.config.

Marco Aurelio Fernandez Reyes
źródło