Newsgroup: it.comp.www.asp
Titolo: Application var con sessioni disabilitate

Qualcuno sa come vengono interpretati l'inizio e la fine di una
applicazione, quando le sessioni sono diabilitate via codice:
EnableSessionState=False o ancora meglio direttamente su IIS?
Se utilizzo una application var, quando questa verrà "svuotata"? Quando cioè
il server saprà che l'applicazione è finita? Grazie
--
:: Fate i bravi e non clonate le pecore!
:: Distractly yours... 
man...@audiopro.it

 il server saprà che l'applicazione è finita? Grazie
Parlo per esperienza personale.
Da quanto ho avuto modo di constatare l'applicazione non finisce mai tranne
nei casi:
- Riscrittura del global.asa (e web.config in .net)
- Arresto volontario del server da parte dell'amministratore
- Problemi del server
- ...
Le variabili application e le variabili session sono due cose ben distinte,
l'assenza o la disabilitazione delle seconde non compromettono le prime.
Ciao
--
AZ

Però teoricamente, le variabili di applicazione "decadono" anche quando
scade l'ultima sessione.
La domanda infatti era.. ma se le session sono disabilitate? C'è un timeout
standard (20 min) che parte da ogni richiesta al server o cosa?
Non credo che il serer continui a considerare l'applicazione "aperta" anche
dopo 1 ora che non si verificano richieste esterne (sarebbe uno spreco di
risorse)
...non saprei...
--
:: Fate i bravi e non clonate le pecore!
:: Distractly yours... 
man...@ufologia.net


Moderatore di it.comp.www.asp - .NET MVP
http://www.aspitalia.com/
 Enjoy the .NET community!
http://www.dev2dev.it/
 La rete ha connesso nuove particelle! 

:) Non prevedo il futuro, c'è apposta la proprietà di timeout sulle
sessioni.
Altrimenti non avrebbero senso le varie routine chiamate on_sessionEnd e
on_applicationEnd in global.asa
Quando scade l'ultima sessione (in base alla proprietà di session.timeout
impostata) allora finisce anche l'applicazione.
Ma scusate... mi sembra che queste cose le sappiate benissimo, perchè mi
fate passare per visionario? :)))
Ora la domanda è... ... accidenti è dura... avendo le session disabilitate,
non potendo quindi definire un timeout per le sessioni, e sapendo  che
l'applicazione viene chiusa quando decade l'ultima sessione, come fa IIS a
sapere che l'ultima sessione è finita e a chiudere l'applicazione?
(svuotando le variabili di applicazione)


 scade l'ultima sessione.
Non sono d'accordo. Io ho variabili session che vanno avanti per più giorni,
anche se utenti si collegano (e quindi fanno partire sessioni) a distanza di
qualche ora uno dall'altro.
Concordo con AZ, sono solo quelle le volte in cui la application viene
terminata!
___________________________________________________________
a p bertolini
"I computer sono inutili. Sanno darti solo risposte" (P. Picasso)
#ICQ: 10681264
(
www.webwarrior.org
)

 chiudere l'applicazione? (svuotando le variabili di applicazione)
quando modifichi il file globa.asa o spegni il webserver o fermi il sito web
legato all'applicazione o spegni il server...
ciao
--
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
I veri problemi della vita saranno sicuramente cose che non t'erano mai
passate per la mente.

> session <> application
Grazie Lino... questa cosa mi era sempre sfuggita! Ora finalmente ho
capito!!!!! Grazie... ... :/
Non ho mai avuto tanti problemi a spiegare qualcosa incredibile! Hehehe :)
Crredo di aver capito anche perchè non riesco a spiegarmi. Cito testualmente
da "Professiona Active Server PAges 3.0 - Wrox Press" (forse così ci
riesco...)
When Do Applications and Sessions Start and End?
- An application starts when the first user requests an ASP page that is
within the application scope... (...)
(...)
- An application ends immediatly AFTER THE LAST ACTIVE SESSION WITHIN THAT
APPLICATION ENDS.
Ora non server prevedere il futuro per sapere quando finisce l'ultima
sessione, dato che la proprietà timeout è li apposta a rimediare ad uscite
improprie...
Spero di essere stato più chiaro. Se questa cosa sia inesatta non so.. in
genere quelle della Wrox sono abbastanza ffidabili..



Moderatore di it.comp.www.asp - .NET MVP
http://www.aspitalia.com/
 Enjoy the .NET community!
http://www.dev2dev.it/
 La rete ha connesso nuove particelle! 

Grazie Daniele.
Secondo me comuque "..An application ends immediatly AFTER THE LAST ACTIVE
SESSION WITHIN THAT APPLICATION ENDS.." non è solo fuorviante, ma qualcosa
di più! :)
Oltretutto sarebbe anche logico. Quando l'ultima sessione va in timeout
significa che non ci sono più richieste (nei parametri da noi definiti per
il timeout) quindi che senso avrebbe tenere in piedi l'applicazione? Tanto
vale "chiuderla" per poi riaprirla nel caso di una successiva richiesta,
anche al 21° minuto. Proprio come avviene per le sessioni.
Mi viene da pensare che in versioni meno recenti di IIS e chissà su PWS il
funzionamento fosse proprio questo.
Che sia cmabiato poi in versioni più recenti? Magari hanno trovato un modo
di tenere sempre in piedi l'applicazione senza sprecare risorse, tanto da
farla preferire ad un "riavvio" della stessa?
Comunque ho fatto una paginetta di test:
<%
If Request.QueryString("s") = "end" Then
 Session.Abandon
 Response.Redirect "test.asp"
End If
Response.Write "App var = " & Application("testvar") & "<br>" & _
"Se la variabile qui sopra è vuota, l'applicazione è appena iniziata<br>" &
_
"Prova ad aggioranre la pagina due tre volte e risulterà piena<br><br>" & _
"Ora <a href=""test.asp?s=end"">clicca qui</a> per terminare la sessione
corrente"
Application("testvar") = "APP STARTED"
%>
Effettivamente l'applicazione non termina.
Però quanto scritto nel testo Wrox, lo confermo ricordando le prime prove
che feci 3 anni fa con global.asa e sessioni. E basaai tutto un sistema di
tabelle temporanee e pulizia del DB (allora in access) proprio
sull'Application_OnEnd e feci una serie infinita di test, proprio per
verificare che tutto filasse (attendevo che la sessione scadesse e poi
verificavo sei i record nel db erano stati eliminati. E questo avveniva con
un DELETE piazzato proprio nel globabl.asa su Application_OnEnd)
Visto che poi ho abbandonato le sessioni in favore dei cookies, non mi si è
più ripresentato il problema, ma che prima funzionasse così (come sarebbe
logico pensare) sono sicuro al 99% (mai dire mai! Hehehe!)
Cmq grazie per la partecipazione ;)


Là... ecco la versione con variabile di sessione anche, che dimostra che la
sessione finisce (quando la terminate da link) ma l'applicazione (bastarda!)
resta in piedi ;)
Cmq meglio così... la paura mia era che disabilitando le session
l'applicazione finiva dopo 20 min o chissà quando... se resta in piedi
peggio per lei, meglio per me ;) Bwhehehehe
Eccolo qua:
<%
If Request.QueryString("s") = "end" Then
 Session.Abandon
 Response.Redirect "test.asp"
End If
Response.Write "App var = " & Application("testvar") & "<br>" & _
"Session var = " & Session("testvar") & "<br>" & _
"Se la variabile qui sopra è vuota, l'applicazione è appena iniziata<br>" &
_
"Prova ad aggioranre la pagina due tre volte e risulterà piena<br><br>" & _
"Ora <a href=""test.asp?s=end"">clicca qui</a> per terminare la sessione
corrente"
Application("testvar") = "APP STARTED"
Session("testvar") = "SES STARTED"
%>


 funzionasse così (come sarebbe logico pensare) sono sicuro al 99%
da quando ho ricordi io (ovvero, quando per installare ASP dovevi 
bestemmiare in 5/6 lingue antiche :D) è sempre stato così. probabilmente non 
ci avrò fatto caso, visto che non ho mai fatto gran uso delle session.
voglio dire, per gli oggetti non vanno bene, con grossi carichi consumano 
ram, ci vogliono i cookie attivi, allora tanto vale usarli direttamente :)
