[ gorann @ 22.06.2005. 11:00 ] @
Da li neko moze da mi pomogne da napisem kod koji ce mi davati broj trenutno zivih sesija na web serveru? Naime ja sam napravio jednu Application promenljivu koju inicijalizujem na nula u ApplicationStart funkciji u fajlu global.asax. U funkciji sessionStart je povecavam za jedan (nova sesija) a u funkciji SessionEnd je smanjujem za jedan (sesija nestaje). Medjutim kad iscitam tu promenljivu dobijam uvek ukupan broj sesija od startovanja aplikacije - kao da se promenljiva ne dekrementira u SessionEnd.

hvala gorann
[ adnan78 @ 22.06.2005. 15:52 ] @
Jesi li vodio racuna o tome da sesija istice posle 20 min po defaultu, tako da bi tvoje sesije trebale da pocnu da se smanjuju tek posle tog vremena. Ili ako imas forms security sesija se ubija nakon log off-a. Znaci ako samo zatvoris browser, neces ubiti sesiju, ona mora ili da istekne sama ili da uradis log off.

Princip na kome ti pokusavas da utvrdis broj zivih sesija je ispavan, i predpostavljam da radi. Vjerovatno je ovo gore navedeno "problem"

Pozdrav,
[ gorann @ 23.06.2005. 07:31 ] @
Na moju veliku zalost nije tako, sesije mi isticu posle 10 minuta i trebalo bi da se njihov broj smanjuje. Dnevno bude po 500 poseta i nikad se ne desava da se broj sesija smanji,t.j. promenljiva se ne smanjuje, prosto kao da se ne izvrsava telo funkcije SessionEnd. Sessije se regularno gase, kad istekne poslednja sesija aplikacija se zatvara. Prilikom kreiranja prve sledece sesije izvrsi se funkcija ApplicationStart, promenljiva se inicijalizuje i povecava se u funkciji SessionStart za 1 prilikom kreiranja nove sesije ali se ne smanjuje za jedan posle nestanka sesije.

[ mmix @ 23.06.2005. 12:03 ] @
Session OnEnd event se izvrsava samo kao je session state u "InProc" modu. Svi ostali rezimi podrazumevaju da ce aplikacija raditi u Clustering rezimu i u takvom scenariju OnEnd se ne poziva nikad (posto je session storage van ASP.NET procesa, ASP.NET ne moze da zna kad je sessija istekla).

Pogledaj web.config, potrazi tag <sessionState> i prebaci mode na "InProc"... Ako ti je neophodan LoadBalancing, onda moras da osmislis drugaciji nacin za brojanje sessija, tehnika je uglavnom vezana za samo mode sessionState-a (npr. za SqlSessionState moze da se napravi upit u SessionState bazu)...
[ DraganK @ 23.06.2005. 12:46 ] @
I mene ovo već dugo muči, prosto kao da se SessionOnEnd nikad ne izvrši pa samim tim i code unutar...

Samo što je kod mene slučaj klasičnog ASP-a.

Anyone?
[ gorann @ 24.06.2005. 08:02 ] @
Mod InProc je po default-u u fajlu web config, tako da to ne resava problem. Sto je i logicno, zamislite da je po startno namesteno da se informacije o sessionima smestaju u sql server :).

[ mmix @ 24.06.2005. 12:20 ] @
Citat:
gorann: Mod InProc je po default-u u fajlu web config, tako da to ne resava problem. Sto je i logicno, zamislite da je po startno namesteno da se informacije o sessionima smestaju u sql server .

To sto je po defaultu ne znaci da nisi mogao to promeniti

Elem, sad pogledaj sledece (iz MSDNa):

Worker Process Recycling Drops Application Session State

By default, worker processes recycle after 120 minutes. If your ASP applications are not designed to store session state while a worker process is recycled, then session state in that ASP application can be lost. To remedy this problem, you can either store session state in a database or disable worker process recycling.

To disable worker process recycling
1. In IIS Manager, expand the local computer, expand Application Pools, right-click the application pool, and then click Properties.
2. On the Recycling tab, clear the Recycle worker processes (in minutes) check box.
3. Click OK.


posledica ovoga (sto se ne vidi iz gornjeg ali je tacno) je da sessioni koji su zapoceti pre recycling-a ne pozivaju OnEnd kad odumiru. Mislim da je to reseno konacno u ASP.NET 2.0. Probaj da iskljucih recyclign pa da vidimo dal ce to resiti problem.... AKo ne resi, okaci global.asax.cs ili vb da vidimo sta je problem...
[ altamed @ 25.06.2005. 00:03 ] @
Citat:
I mene ovo već dugo muči, prosto kao da se SessionOnEnd nikad ne izvrši pa samim tim i code unutar...
Anyone?


Da, problem kod VS2003 i ranije verzije...

Kreiraj metod rucno u Global.asax.sc:

protected void Session_OnEnd(Object sender, EventArgs e) {
}

Radi - garant.

Najlakse testirati sa

protected void Session_Start(Object sender, EventArgs e) {
this.Session.Timeout = 1; //temp
}