webForumDet fria alternativet

Session.exists?

9 svar · 328 visningar · startad av skyman

skymanMedlem sedan juli 20012 450 inlägg
#1

Jag har försökt leta men jag hittar inget sätt att kolla om min Session["kundid"] finns, dvs om kunden är inloggad.

Kan man kolla om just den sessionen finns?

GrynetMedlem sedan maj 2001329 inlägg
#2

Skulle vara intressant om det fanns ett sätt att hitta andra sessioner på, men jag har inte lyckats göra detta på.

Men för att lösa ditt problem så kan du ju spara loggin informationen på ett annat ställe. Lämpligtvis i cookies. Tror även att det kan gå om du ändrar din session model från inprocess till sql. Men absolut lättast är väl att spara en bool om dom är inloggad eller inte i cookies.

skymanMedlem sedan juli 20012 450 inlägg
#3

Det är så att jag lägger en klass i session som "transporterar" informationen mellan sidorna så jag vill helt enkelt bara kolla om denna finns annars gör jag en response.redirect tillbaka till förstasidan.

Det går alltså inte att kolla om just den sessionen finns?

GrynetMedlem sedan maj 2001329 inlägg
#4

Du menar alltså om användaren öppnar ett nytt fönster och loggar in så vill du använda samma session för det fönster och det andra?

Tror inte detta funkar (letat lite men ej hittat någe sätt) men det borde funka om du använder dig av SQL server som din sessionstate.

lite inklistrat från quickstarten..

By default, ASP.NET will store the session state in the same process that processes the request, just as ASP does. Additionally, ASP.NET can store session data in an external process, which can even reside on another machine. To enable this feature:

Start the ASP.NET state service, either using the Services snap-in or by executing "net start aspnet_state" on the command line. The state service will by default listen on port 42424. To change the port, modify the registry key for the service: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\Port
Set the mode attribute of the <sessionState> section to "StateServer".
Configure the stateConnectionString attribute with the values of the machine on which you started aspnet_state.
The following sample assumes that the state service is running on the same machine as the Web server ("localhost") and uses the default port (42424):
<sessionState
mode="StateServer"
stateConnectionString="tcpip=localhost:42424"
/>

Note that if you try the sample above with this setting, you can reset the Web server (enter iisreset on the command line) and the session state value will persist.
Using Client-Side Cookies

Det är det bästa jag kan komma på. Eller så sparar du själv undan allt du behöver till användaren i en db och håller bara en cookie som säger vem han är.

Är ett omständigt sätt, så hoppas att någon kommer på hur man kan komma åt andra session objekt

skymanMedlem sedan juli 20012 450 inlägg
#5

Det jag skrev i mitt första inlägg var bara taget ur luften, det handlar inte om en inloggning, bara en koll om den klassen i sessions finns.
Jag får väl vänta och se om någon kommer på något.

DinoMedlem sedan sep. 20011 914 inlägg
#6

Är jag helt ute och cyklar nu, men kan man inte loopa igenom session.contents och se om den specifika sessionen finns.

skymanMedlem sedan juli 20012 450 inlägg
#7

Det lät intressant...
this.Session.Content... och sen då? :)

GrynetMedlem sedan maj 2001329 inlägg
#8

Content finns bara för att vara bakåt kompatible. Den verkar bara returnera samma httpSessionState som man kallar ifrån.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebSessionStateHttpSessionStateClassContentsTopic.asp

skymanMedlem sedan juli 20012 450 inlägg
#9

Min lösning...
Samtidigt som jag sätter min session så sätter jag en annan med en strång i, sen kollar jag bara om det är likamed det senare, alltså finns den andra också...
Klumpigt kanske...

En annan variant är väl att kolla om den är längre är 0 tecken...

PatrikBMedlem sedan mars 20002 836 inlägg
#10

detta listar ut alla namn som finns i session-objectet. Om din session finns kommer namnet på den att listas ut.

    For Each Sess IN Session
        '## -- kontrollera om session finns --
        If Sess = "kundid" Then
            '## -- gör vad du ska om sessionen finns --
        End If
    Next

cya,
PatrikB

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)