Bardzo się starałem, ale nie mogę znaleźć rozwiązania, jak ustawić wartość limitu czasu sesji dla sesji w trakcie dla aplikacji internetowej ASP.Net.
Używam VSTS 2008 + .Net 3.5 + C #. Oto, co napisałem sam, aby ustawić limit czasu na 1 minutę, czy to prawda?
Napisałem w sekcji system.web w web.config
<sessionState timeout="1" mode="InProc" />
Odpowiedzi:
Jeśli chcesz ustawić limit czasu na 20 minut, użyj czegoś takiego:
źródło
Wartość ustawiana w
timeout
atrybucie jest jednym z poprawnych sposobów ustawiania wartości limitu czasu sesji.W
timeout
Określa atrybut liczba minut sesja może być bezczynny, zanim zostanie porzucona. Domyślna wartość tego atrybutu to 20.Przypisując wartość 1 do tego atrybutu, ustawiłeś sesję tak, aby została porzucona w 1 minutę po jej bezczynności.
Aby to przetestować, utwórz prostą stronę aspx i napisz ten kod w zdarzeniu Page_Load,
Otwórz przeglądarkę i przejdź do tej strony. Zostanie wydrukowany identyfikator sesji. Poczekaj minutę, a następnie naciśnij przycisk odświeżania. Identyfikator sesji ulegnie zmianie.
Teraz, jeśli moje przypuszczenie jest poprawne, chcesz, aby użytkownicy wylogowali się, gdy tylko sesja wygaśnie. Aby to zrobić, możesz skonfigurować stronę logowania, która zweryfikuje poświadczenia użytkownika i utworzy zmienną sesji, taką jak ta -
Teraz będziesz musiał sprawdzić na każdej stronie tę zmienną w ten sposób -
To jest prosty przykład tego, jak to działa.
Aby jednak tworzyć bezpieczne aplikacje o jakości produkcyjnej, użyj klas ról i członkostwa dostarczonych przez ASP.NET. Zapewniają uwierzytelnianie oparte na formularzach, które jest znacznie bardziej niezawodne niż normalne uwierzytelnianie oparte na sesji, którego próbujesz użyć.
źródło
Jeśli używasz MVC, umieść go w pliku web.config w katalogu głównym aplikacji internetowej, a nie w pliku web.config w katalogu Views. Musi również znajdować się W węźle system.web, a nie pod jak George2 stwierdził w swoim pytaniu: „Napisałem w sekcji system.web w web.config”
Wartość parametru limitu czasu reprezentuje minuty.
Istnieją inne atrybuty, które można ustawić w elemencie sessionState. Informacje można znaleźć tutaj: docs.microsoft.com sessionState
Możesz wtedy złapać początek nowej sesji w pliku Global.asax, dodając następującą metodę:
źródło
Użyj tego w
web.config
:źródło
timeout
naprawdę.stateConnectionString
isqlConnectionString
są ignorowane kiedymode="InProc"
, a wartościmode
icookieless
są ustawiane na wartości domyślne. Więc to naprawdę sprowadza się do odpowiedzi Wolfwyrda.Jeśli nie działa z
web.config
, musisz ustawić go z IIS.źródło