Avatar billede bongo20 Nybegynder
10. november 2004 - 09:51 Der 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!?!

Her er koden:

public void Session_Start(Object sender, EventArgs e)
{
    StreamWriter SW;
    SW=File.CreateText( Request.PhysicalApplicationPath + "ErrorLog.txt" );
    SW.WriteLine("Session_start");
    SW.Close();
}

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?

N
:o)
Avatar billede snepnet Nybegynder
10. november 2004 - 10:23 #1
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
Avatar billede bongo20 Nybegynder
10. november 2004 - 10:38 #2
Ja det ved jeg, men har du så ingen mulighed for at fyre noget kode af når browseren lukkes ?
Avatar billede basementjack Nybegynder
10. november 2004 - 10:43 #3
Ja er det ikke Page_Unload ?
Avatar billede snepnet Nybegynder
10. november 2004 - 11:06 #4
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;

mvh
Avatar billede bongo20 Nybegynder
10. november 2004 - 13:45 #5
Det lyder som noget der er til at finde ud af snepnet :o)

Det der sker i min Session_End skulle så altså alligevel ske efter de ca. 20 min efter browseren er blevet lukket?
Avatar billede snepnet Nybegynder
10. november 2004 - 13:50 #6
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
Avatar billede bongo20 Nybegynder
11. november 2004 - 13:29 #7
Jeg kan ikke få noget som helst til at ske i min Session_End, men det andet virker fint !
Avatar billede snepnet Nybegynder
11. november 2004 - 14:45 #8
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.

mvh
(er det svar på den ok ?)
Avatar billede bongo20 Nybegynder
13. november 2004 - 09:24 #9
Jeg bruger lige nu den lokale iis på min egen maskine, hvor jeg ikke har pillet ved konfigurationen!

Jeg kan ikke nøjes med at vente på at brugeren lukker sin browser, jeg er nødt til at have noget kode der fyres af også når sessionen timer ud...
Avatar billede snepnet Nybegynder
13. november 2004 - 11:06 #10
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.
Avatar billede bongo20 Nybegynder
07. december 2004 - 14:10 #11
Det virker ikke en skid snepnet :o)

I min Session_Start her virker det glimrende:

public void Session_Start(Object sender, EventArgs e)
{
    StreamWriter SW;
    SW=File.CreateText( Request.PhysicalApplicationPath + "ErrorLog.txt" );
    SW.WriteLine("Session_start");
    SW.Close();
}

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)


public void Session_End( Object sender, EventArgs e )
{
    StreamWriter SW2;
    SW2 = File.CreateText(Request.PhysicalApplicationPath + "ErrorLog2.txt");
    SW2.WriteLine("Session_end = " + e.ToString());
    SW2.Close();
}

Min web.config ser sådan ud:

<configuration>   
    <system.web>       
        <sessionState cookieless="false" mode="InProc" timeout="1" />     
        <customErrors mode="Off"/>
        <compilation debug="true"/>       
    </system.web>
</configuration>

Flere forslag ?

:o)
Avatar billede snepnet Nybegynder
07. december 2004 - 18:38 #12
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).

StreamWriter sw = new StreamWriter(@"<path her>", false);
sw.WriteLine("Session End : " + DateTime.Now.ToString());
try
{
    sw.WriteLine(Request.PhysicalApplicationPath);
}
catch(Exception er)
{
    sw.WriteLine(er.Message);
}
sw.Close();

mvh :o)
Avatar billede snepnet Nybegynder
07. december 2004 - 18:40 #13
"HAHA" gik for øvrigt på dit friske sprog (og ikke problemet) - altid rart når folk kalder en spade for en spade :o)
Vi skrives ved
/snep
Avatar billede bongo20 Nybegynder
08. december 2004 - 10:30 #14
Lige nøjagtig snepnet ;o)

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?

Bare rolig du HAR optjent pointene :o)
Avatar billede bongo20 Nybegynder
09. december 2004 - 12:54 #15
det ved du ikke rigtig? :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester