2011-11-22 7 views
7

Wiem, że to prawdopodobnie łatwe pytanie dla większości z was. Ale moim problemem jest to, że mój serwer serwera opróżnia swoje pule sesji co minutę. Jak mogę sprawić, aby moi użytkownicy pozostali zalogowani dłużej niż minutę?Jak zapobiec przekroczeniu limitu czasu

Słyszałem, że mogę używać SessionStates, ale nie znalazłem żadnych przewodników w sieci, które są łatwe w użyciu dla początkujących, takich jak ja.

Również słyszałem o tym, jak robiłem to z ciasteczkami. W jaki sposób?

pracuję z C# i .NET

Odpowiedz

12

Oto jeden ze sposobów:

http://weblogs.asp.net/stevewellens/archive/2009/06/09/ah-ah-ah-ah-staying-alive-staying-alive.aspx

Czasami chcesz, aby Twoja strona internetowa "pozostała przy życiu". Oznacza to, że jeśli użytkownik wypełnia skomplikowany formularz, nie chce, aby sesja upłynęła, zanim skończą. Użytkownik może być bardzo zły i słusznie: możesz nawet zostać okrzyknięty!

Nie chodzi tylko o zwiększenie limitu czasu sesji do bardzo dużej wartości. Jeśli to zrobisz, sesje pozostaną aktywne w pamięci serwera przez wiele godzin po tym, jak użytkownicy opuścili witrynę. Zwiększenie limitu czasu sesji to rozwiązanie ... ale niekoniecznie dobre rozwiązanie.

Celem jest, aby sesja była aktywna tak długo, jak strona internetowa jest otwarta na komputerze klienta ... nawet jeśli nie ma postów, aby zresetować licznik sesji. Gdy strona internetowa jest zamknięta, sesja powinna się normalnie przerwać.

Zaimplementowałem rozwiązanie tego problemu: klient będzie "pingował" serwer w odstępach mniejszych niż limit czasu sesji, co spowoduje zresetowanie licznika sesji. Jest to tak zwany wzór projektu Heartbeat (nie mogłem znaleźć porządnej strony/strony, do której można utworzyć link) ...

+9

+1 nie tylko dlatego, że jest to dobre rozwiązanie, ale także z powodu groovy title. – David