10. november 2004 - 09:51Der er
14 kommentarer og 1 løsning
Global.asax session_end
Jeg har problemer med min session_End. Jeg vil egentlig gerne rode rundt i databasen fra min global.asax, men lige nu tester jeg bare ved at skrive til en textfil.
Når jeg opretter og skriver til en textfil fra Session_Start så virker det fint, men fra Session_End sker der ingenting!
Jeg forsøger at teste Session_End ved at lukke browseren, det skulle vel gerne fyre Session_End af!?!
public void Session_End( Object sender, EventArgs e ) { StreamWriter SW2; SW2 = File.CreateText(Request.PhysicalApplicationPath + "ErrorLog.txt"); SW2.WriteLine("Session_end"); SW2.Close(); } Er her nogen der kan hjælpe?
session_end fyres ikke af når du lukker browseren.... det ved serveren ikke noget om. men din session timer ud iht. indstillinger på iis'en. plejer at være 20 minutter som default. mvh
nej page_unload (serverside) køres når objektet dumpes fra memmory (altså når jobbet er gjort, og siden er renderet til klienten)..... men det er sikkert muligt at skrive et javascript der ringer til serveren når browseren lukkes... jeg har har ikke prøvet det selv, men du kan prøve denne... den vil nok fyre når du lukker browseren.
<script language=javascript> <!--
function window_onunload() { alert('test'); }
//--> </script>
alert('test') er jo så ikke så ophidsende, men du kunne jo smutte på serveren der istedet ved f.eks. :
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
// du kan så angive en eller anden parameter i din querystring du kan bruge på serveren xmlHttp.open( "POST", targetUrl, false); xmlHttp.send();
// du kan få responsen sådan her, men den skal du jo nok ikke bruge til noget på klienten var res = xmlHttp.responseText;
ja der skulle du gerne få kørt koden - men du kan muligvis løbe ind i lidt problemer. (synes jeg er stødt på sider hvor der har været lidt brokkerier over session_end :o) mvh
den burde fyre når sessionen timer ud på iis'en.... men det er ikke understøttet med mindre du bruger InProcess statemanagement. hvis du bruger en stateserver (eller en sqlserver) til at holde state - fyrer det ikke. men den fedeste løsning er nok under alle omstændigheder at du får det at vide når browseren lukkes tænker jeg.
hvis du sætter timeout ned til f.eks. 2 minutter - er det nok lidt nemmere for dig at test om tingene går ok. med en standardopsætning (med inproc state) skulle det fungere fint.
Den opretter en txt fil og skriver Session_Start i den.
Her i min Session_End virker det slet ikke,. jeg får hverken fejlmeddelelser eller nogen form for reaktion uanset om jeg venter et minut 20 min, eller flere dage :o)
HAHA :o) Nå... men det er jo lidt kedeligt at det ikke lige snurrer som det skal. Jeg tror dog godt jeg kan give dig et bud.
Du kan ikke få fingre i dit request-objekt i din session end - og det er derfor din metode fejler... Prøv noget i denne stil (så kan du få fejlen at se) : (Du må lige prøve med en "sikker" sti til at starte med).
Kan det så monstro passe at fordi jeg på en side har noget baggrundsopdatering hver 30. sec, at det også opdaterer brugerens session variabel hvert 30. sec?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.