Jag undrar om det finns något i klassbiblioteket som kan använda sig utav för att "fånga upp" aktiva sessioner. Du kan inte använda Sessions-variabler på det sättet eftersom det strider mot hur en session skiljs från andra, antingen använder du en databas som du beskrev, alternativt cachar du de variabler du önska dela i Application-objektet istället. Så en fråga till nu när jag kör via databasen, när en användare loggar in så sätts ett värde i databasen som indikator på att han är online. Nu försöker jag via global.asax och Session_OnEnd() sätta det värdet till false, men det vägrar fungera. Jag har läst lite om det här på Internet, och tydligen så beror händelsen Session_OnEnd:s lite på vilken typ av sessionshantering du använder, InProc eller OutOfProc, använder du InProc med ASP.NET's tillståndsmotor på den lokala maskinen så borde det fungera, men om du kör OutOfProc mot en gemensam tillståndsserver, alternativt en SQL databas för att lagra sessionerna på så kan du få ett inkonsekvent uppträdande. Precis som Johan skirver så körs endast Session_OnEnd när du kör dina session in-process session-state mode. Så fort du justerar denna, går mot SQL server eller liknande så är du out-Process, vilket gör att Session_OneEnd inte vill exekveras. Tack för svaren! Om du är nöjd kan du väl sätta detta som löst? FOlk slarvar lite med sånt :-(En liten fråga om sessioner
Vid varje inloggning så skapas ett antal sessioner som innehåller diverse info om användaren nu vill jag kunna fånga upp värden från specifika sessionvariablar från alla aktiva sessioner. Jag vill tex kunna få tag i alla aktiva Session["username"] värden.
Eller blir jag tvungen att lösa det här på annat vis, som att spara alla värden i databasen? har ni några bra förslag?
Sv: En liten fråga om sessioner
MvhSv: En liten fråga om sessioner
Några idéer?Sv: En liten fråga om sessioner
Du bör också tänka på att om WorkerProcessen för din applikation markeras för återanvändning (recycling) så kommer Session_OnEnd tydligen att anropas och det skulle kunna leda till att det skulle se ut som om alla användare är utloggade...
Jag ska kolla lite mer på detta när jag kommer till kontoret, nu vaknade min dotter...
MvhSv: En liten fråga om sessioner
Om du vill komplicera det lite så kan du ju lägga upp onlineanvändare i en Applicationstate (köra en Dictornary collection eller liknande.) I denna sparar du ner användarnamn och datum, så fort användaren gör något uppdaterar du användarens datum på så sätt ser du om han är online eller ej. sätter du en timeout på 20 min så rensar du bara bort de poster där användarnas tid är äldre än 20 min.
Dock har du ju ingen 100% koll på om användarna är online nu eller ej. Du kan ju om du vill sätta en time på om ingen gjort någotn på 2-10 min så flaggar du honom/henne som away sedan tar du bort honom/henne
En annan grej är ju att Sessionhanteraren för databasen tar ju bort datan när det blir en session timout. Så länge användaren än där så finns ju hans/hennes data i db:n du kan ju ev på något sätt kolla av detta.
Dock är det svårt att få en helt hundra procentlig hantering om en användare är online eller ej. Din Logga Ut knapp/länk kan ju döda sessionen och eller Applicationsstaten. Men det är ju inte alla som brukar logga ut via den vägen.
//Johan NSv: En liten fråga om sessioner
Och Session_OnEnd fungerade visst, det var jag som tänkte fel från början.
Jag kör InProc-mode.Sv: En liten fråga om sessioner
Kul att du fick ordning på det. :-)
//Johan N