Om vi tar exemplet med en användares id så beror det på hur du får tag på det från början. Det jag tänker på när jag hör användarid är att en användare har loggat in. Om du använder Forms Authentication (kanske de andra Authentication också) och har med en checkbox för att komma ihåg användarens inloggning så blir användaren egentligen aldrig utloggad, vilket gör att när en session får timeout och en ny börjar så kommer användarens uppgifter tillbaka. Du kan i Session_End få tag i datan som finns i Sessionen. Hmm kan inte få det att fungera, känns som att de försvunnit innan session_end körs. Jag tror inte MS har fixat det problemet sedan asp 3.0 - Att använda session.onend är för sent, användaren är redan väck och triggas bara i enstaka fall. Du kan inte komma undan detta på något annat sätt än att be användaren uttryckligen logga ut - i resterande fall då sessioner dör och man surfar vidare eller stänger fönster, är det rökt. När sessionen får en timeout, så anropas Session_OnEnd eventet i Global.asax. I detta event kan du komma åt sessionen, men efter eventet är utfört så kan du inte det. Precis... Måste tillägga en sak: Session_OnEnd fungerar BARA om man kör med inproc sessions; dvs. att sessionen ligger i asp.net motorns ramminne. Om man använder stateserver eller sql-server så fungerar inte session_OnEnd. Upptäckte precis att det vart annorlunda med inproc, så nu fungar det. Går det att få fram sessionvariabler från global.aspx vid session_end?
När en session tar slut går det då att på något sätt fånga upp eventuella sessionvariabler i global.aspx?
Tex om man lagrar en användares id i Session["uid"] och sedan gör sessionen timeout.
Själv ser jag inte att det är möjligt men du får gärna bevisa mig fel.Sv: Går det att få fram sessionvariabler från global.aspx vid session_end?
Om du ska ha tillbaka dem utan ovanstående så måste du nog lägga en cookie hos användaren. I Session_Start lägger du sedan en koll om cookien finns. Om den gör det så sätter du variabeln igen.
Lösningen med cookies kan du använda till alla sessionsvariabler.
En annan lösning som jag inte testat är att i Session_End aktivera en ny Session med de gamla Sessionsvariablerna. Som sagt, inte testat och jag vet inte hur man skulle göra. Tror att ett bättre alternativ i så fall är att skruva upp timeout-tiden. Men samtidigt så är timeouten en bra säkerhetsdetalj när användare glömmer logga ur eller stänga ner webbläsaren.Sv: Går det att få fram sessionvariabler från global.aspx vid session_end?
/Fredrik Normén NSQUARED2
http://fredrik.nsquared2.comSv: Går det att få fram sessionvariabler från global.aspx vid session_end?
Sv: Går det att få fram sessionvariabler från global.aspx vid session_end?
Sv: Går det att få fram sessionvariabler från global.aspx vid session_end?
Ett sätt att testa detta är att du i Session_OnEnd skriver ner värdet för din Session i en fil.
Jag gjorde ett test på detta och filen skapades samt att sessionens värde sprades ner i filen. Det låter självklart logiskt att sessionen inte borde finnas när Session_OnEnd utförs, men så var inte fallet i de tester jag har gjort.
Mvh Fredrik Normén NSQUARED2
http://fredrik.nsquared2.comSv: Går det att få fram sessionvariabler från global.aspx vid session_end?
Jag testade oxå.
I Page_Load satte jag en Session.
Session["Johan"] = "Värde finns!";
Sedan en Time Out:
Session.TimeOut = 1;
i Session_End inne i global.asax satte jag en StreamWriter som skrev till en fil.
... Session_End....
StreamWriter s = new StreamWriter("c:\\session.txt",true);
s.WriteLine(Session["Johan"].ToString());
s.Flush();
....
Startade sidan, en minut senare stod det Värde Finns i min Session.txt
Så du måste göra något fel.
mvh JohanSv: Går det att få fram sessionvariabler från global.aspx vid session_end?
Om du kör sql-server så används sk. jobs (om ajg inte tar fel) som sätts av asp.net. De handlar om att sql-server ska mörda sessionen i databasen vid en viss tidpunkt. Om du vill så borde du kunna modifiera lite däri så att den t.ex. skapar en text-fil eller något där namnet på filen är id:t på användaren eller något sådant. Sedan kan du ha en windows service som kollar efter nya filer. På det sättet kan du emulera Session_OnEndSv: Går det att få fram sessionvariabler från global.aspx vid session_end?
Tack för hjälpen.