Pytanie : Wykrywać Sesyjny Stan Timeout

Kochany Ekspert,

I mieć aspx aplikacja sieciowa który wymagać więcej niż 8 godzina odświeżać lub logout.  Zadawalać żadny połączenie ale I polubić niektóre VB.NET kod lub JavaScript Sesyjny timeout podręczny pismo który mówić: "Tam  być żadny aktywność na jakiś czas. Klikać "OK" jeżeli ty życzyć twój sesja, lub stuknięcie "Odwoływać" logout. Dla twój ochrona jeżeli ty być niezdolny ten wiadomość wśród 2 minuta ty notować ten automatycznie" i redirects login.aspx po tym jak timeout tracić ważność.

I robić kod dla 2 dzień bez jakaś sukces, także I polubić ty móc mój kod mój:  web.config, global.asax, login.vb dla twój przegląd i twój pomoc być naprawdę dużo doceniający.  Thanks.

WEB.CONFIG


Notatka: Gdy alternatywa ten kartoteka ty móc the
sieć admin narzędzie położenie dla twój zastosowanie. Use
the Website->Asp.Net Konfiguracja opcja w Projekt Studio.
A pełny lista położenie i komentarz móc znajdować w
machine.config.com ments zazwyczaj lokalizować w
\ Windows \ Microsoft.Net \ Framework \ v2.x \ Config
-->















-->

-->
Ustalony kompilacyjny debug= " prawdziwy" debugging
symbol w the kompilować strona. Ponieważ ten
wpływać występ, ustawiać ten wartość true tylko
podczas development.

Wizualny Podstawowy opcja:
Ustalony strict= " prawdziwy" disallow wszystkie dane typ zamiana
dokąd dane strata móc.
Ustalony explicit= " prawdziwy" deklaracja wszystkie variables.
        -->
art= " 15" strict= " fałszywy " >

















































/>

/>







The sekcja umożliwiać konfiguracja
the ochrona uwierzytelnienie tryb używać
ASP.NET przybywający użytkownik. timeout= " 480 "
        -->
er>















-->


































The system.webServer sekcja wymagać dla ASP.NET AJAX pod Internet
serwis informacyjny 7.0.  Ono być konieczny dla poprzednia wersja IIS.
    -->

iguration= " fałszywy "/>












































LOGIN.VB

Protected Okręt podwodny btnLogin_Click (ByVal nadawca Jako Przedmiot, ByVal e Jako System.EventArgs) Rękojeść btnLogin.Click



Ćmić adPath Jako Sznurek = "LDAP: //DC=cool, DC=net "
Ćmić adAuth Jako Nowy SITE.LDAPAuthentication (adPath)
Try
Jeżeli Prawdziwy = adAuth.IsAuthenticated (txtDomain.Text, txtusername. Tekst, txtPassword.Text) Then

'dostawać użytkownik rola
Ciemnawy grupa Gdy Sznurek = adAuth.GetGroups ()

'Tworzyć the bilet, i dodawać the groups.
Ciemnawy isCookiePersistent Jako Boolowski = chkPersist.Checked
Ciemnawy authTicket Gdy Nowy FormsAuthenticationTicket (1, txtUsername.Text, DateTime.Now, DateTime.Now.AddHours (12), isCookiePersistent, grupa)

'Utajniać the ticket.
Ciemnawy encryptedTicket Gdy Sznurek = FormsAuthentication.Encrypt (authTicket)

'Tworzyć a ciastko, i wtedy dodawać the utajniony bilet the ciastko gdy data.
Ćmić authCookie Jako Nowy HttpCookie (FormsAuthentication. FormsCookieName, encryptedTicket)

'Jeżeli ChkPersist Sprawdzać 'w rozkaz dla wyszukiwarka the ciastko ekspiracja czas musieć ustawiać
"wprawiać w zakłopotanie FormsAuthenticationTicket.Expire z ciastko tracić ważność czas
Jeżeli Prawdziwy = isCookiePersistent Then
authCookie.Expires = authTicket.Expiration
Końcówka If

"Dodawać the ciastko the otwarty ciastko collection.
HttpContext.Current.Response. Cookies.Add (authCookie)


"Ty móc redirect now.
"Response.Redirect (FormsAuthentication.GetRedirectUrl (txtUsername.Text, Fałszywy))
Response.Redirect (FormsAuthentication.GetRedirectUrl (txtUsername.Text, chkPersist.Checked))
"Response.Redirect ("default.aspx")
Else
errorLabel.Text = "Uwierzytelnienie udawać się. Sprawdzać użytkownik imię i hasło. Upewniać się twój Nakrętka Blokować na twój klawiatura być daleko. "
Końcówka If
Chwyt uwiarygodniać Jako Exception
errorLabel.Text = "Błąd. " + ex. Message
Końcówka Try



Końcówka Sub



GLOBAL.ASAX

<%@ Podaniowy Language= " VB " %>






LDAPAuthentication.VB

Imports System
Imports Microsoft.VisualBasic
Imports System.DirectoryServices
Imports System.Exception


Namespace SITE

Społeczeństwo Klasa LDAPAuthentication
Intymny _path Jako String
Intymny _filterAttribute Jako String

Jawny Okręt podwodny Nowy(ByVal ścieżka Jako Sznurek)
_path = path
Końcówka Sub

Jawny Funkcja IsAuthenticated (ByVal domena Sznurek, ByVal username Jako Sznurek, ByVal pwd Jako Sznurek) Gdy Boolean

Ćmić domainAndUsername Jako Sznurek = domena +" \ "+ username
Ciemnawy wejście Gdy Nowy DirectoryEntry (_path, domainAndUsername, pwd)

Try
'Zmora the miejscowy AdsObject authentication.
Ćmić obj Gdy Przedmiot = entry.NativeObject

Ćmić rewizja Jako Nowy DirectorySearcher (wejście)

search.SearchScope = SearchScope.Subtree
rewizja. Filtr =" (CN= " + username + ") "

'sAMAccountName = imię.  Stary NT 4.0 logon imię, musieć unikalny w the domena.  Móc wprawiać w zakłopotanie z CN.
rewizja. Filtr =" (SAMAccountName= " + username + ") "
search.PropertiesToLoad.Add ("cn")
Ćmić rezultat Jako SearchResult = search.FindOne ()

Jeżeli rezultat Być Rezultat Then
Powrotny False
Końcówka If

'Aktualizacja the nowy ścieżka the użytkownik w the directory.
_path = rezultat. Path
_filterAttribute = DirectCast (rezultat. Properties ("cn") (0), Sznurek)
Chwyt użytkownik Jako System.Exception
Rzut Nowy System.Exception ("Błąd użytkownik. " + ex. Wiadomość)
Końcówka Try

Powrotny True
Końcówka Function

Jawny Funkcja GetGroups () Gdy String

Ćmić rewizja Gdy Nowy DirectorySearcher (_path)
rewizja. Filtr = "(cn=" & _filterAttribute & ") "
search.PropertiesToLoad.Add ("memberOf")

'search.PropertiesToLoad.Add ("sAMAccountname")


Ćmić groupNames Gdy Nowy System.Text.StringBuilder ()

Try
Ćmić rezultat Gdy SearchResult = search.FindOne ()
Ćmić propertyCount Jako Integer = rezultat. Własność ("memberOf"). Count
Ćmić dn Gdy String
Ćmić equalsIndex Jako Integer, commaIndex Gdy Integer

Ćmić propertyCounter Jako Integer = 0
Podczas Gdy propertyCounter < propertyCount
dn = DirectCast (rezultat. Properties ("memberOf") (propertyCounter), Sznurek)
equalsIndex = dn.IndexOf ("=", 1)
commaIndex = dn.IndexOf (", ", 1)
Jeżeli -1 = equalsIndex Then
Powrotny Nothing
Końcówka If
groupNames.Append (dn. Substring ((equalsIndex + 1), (commaIndex - equalsIndex) - 1))
groupNames.Append ("|")
System.Math.Max (System.Threading. Interlocked. Increment (propertyCounter), propertyCounter - 1)
Końcówka While
Chwyt imię Gdy Exception
Rzut Nowy System.Exception ("Błąd grupowy imię. " + ex. Wiadomość)
Końcówka Try
Powrotny groupNames.ToString ()
Końcówka Function
Końcówka Class
End Namespace

Odpowiedź : Wykrywać Sesyjny Stan Timeout

Dlaczego ty właśnie zmiana twój SessionState tryb "StateServer".  Ty można zagadnienie z podaniowy basen i w InProc jeżeli można zdarzać się, sesyjny stan i asp.net pracownik proces przetwarzać.  W SessionState, sesja nić i asp.net pracownik nić oddzielać i jeżeli ono przetwarzać, ono tylko wpływać the pracownik nić.  Jakkolwiek, sprawdzać the połączenie jakkolwiek.

= " prawdziwy "/>  

http://msdn.microsoft.com/en-us/library/ms178586.aspx

Zapominać ASP.NET Stan Usługa.

Ty móc ono w VS2008 nakazowy podpowiedź z ten rozkaz

netto początek aspnet_state

Inne rozwiązania  
 
programming4us programming4us