Hey allen,
voor mijn web-applicatie speelt de volgende situatie:
gebruikers gaan naar het orderformulier om een order in te voeren. Terwijl ze dit doen komt er een klant in de winkel waardoor ze weg zijn van de pc. Na enige tijd komen ze terug bij de pc en blijkt de sessie verlopen, waardoor ze de order opnieuw moeten invoeren. Dit wil ik proberen af te vangen, zodat de sessie niet verloopt.
Ik dacht eerst om de sessie-timeout te verhogen, maar dit bleek niet afdoende helaas. Dus had ik het volgende idee. Ik zet een hidden img tag op m'n orderformulier die middels javascript om de x minuten gerefreshed wordt. Deze afbeelding staat op een aparte pagina die bij elke call in de sessie iets wegschrijft, waardoor de sessie open blijft. Echter lijkt dit niet goed te werken.
Hoe werkt het?
Afbeelding op een html met daarbij de volgende javascript:
Om caching van de afbeelding te voorkomen heb ik een cache-killer op de url gezet d.m.v. de functie getDate op de querystring te zetten.
In de code-behind van de pagina die ik aanroep (TimeoutImage.aspx) staat het volgende:
Als ik debug, zie ik de debugger netjes in de Page_Load komen en wordt de sessie variabele keurig overschreven. Toch lijkt dit de sessie niet in leven te houden helaas. Iemand een idee?
voor mijn web-applicatie speelt de volgende situatie:
gebruikers gaan naar het orderformulier om een order in te voeren. Terwijl ze dit doen komt er een klant in de winkel waardoor ze weg zijn van de pc. Na enige tijd komen ze terug bij de pc en blijkt de sessie verlopen, waardoor ze de order opnieuw moeten invoeren. Dit wil ik proberen af te vangen, zodat de sessie niet verloopt.
Ik dacht eerst om de sessie-timeout te verhogen, maar dit bleek niet afdoende helaas. Dus had ik het volgende idee. Ik zet een hidden img tag op m'n orderformulier die middels javascript om de x minuten gerefreshed wordt. Deze afbeelding staat op een aparte pagina die bij elke call in de sessie iets wegschrijft, waardoor de sessie open blijft. Echter lijkt dit niet goed te werken.
Hoe werkt het?
Afbeelding op een html met daarbij de volgende javascript:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| setInterval( "loadAntiTimeoutImage()", 120000 ); //refresh image every 2 minutes function loadAntiTimeoutImage() { //load a page to set a session variable to prevent timeouts $('#hiddenTimeOutImage').attr("src", '~/TimeoutImage.aspx?t=' + getDate()); } function getDate() { var dateTimeInfo = new Date(); var year = dateTimeInfo.getYear(); var month = dateTimeInfo.getMonth() + 1; var date = dateTimeInfo.getDate(); var hours = dateTimeInfo.getHours(); var minutes = dateTimeInfo.getMinutes(); var seconds = dateTimeInfo.getSeconds(); return year + "-" + month + "-" + date + " " + hours + ":" + minutes + ":" + seconds; } |
Om caching van de afbeelding te voorkomen heb ik een cache-killer op de url gezet d.m.v. de functie getDate op de querystring te zetten.
In de code-behind van de pagina die ik aanroep (TimeoutImage.aspx) staat het volgende:
C:
1
2
3
4
5
| protected void Page_Load(object sender, EventArgs e) { Random rand = new Random(5000); Session["TimeoutImage"] = rand.Next(); } |
Als ik debug, zie ik de debugger netjes in de Page_Load komen en wordt de sessie variabele keurig overschreven. Toch lijkt dit de sessie niet in leven te houden helaas. Iemand een idee?