11 messaggi dal 22 luglio 2003
Chi mi sa dire cosa succede (cosa sospendo) se introduco l?istruzione in oggetto
?Thread.CurrentThread.Sleep? nell?evento page_load?
Quello che vorrei riuscire a fare è:
Nella mia pagina ho un frame nascosto che all?evento ?OnBeforeUnload? apre una finestra di popup!
Il server quindi riceve due richieste prima quella della window di popup e poi quella relativa al frame nascosto.
La finestra di popup dovrebbe chiudere la sessione solo se si sta chiudendo il browser e quindi solo se al server non arrivano richieste ulteriori.
Tramite l?istruzione ?HttpContext.Current.Timestamp? sono in grado di determinare quando è stata originata la richiesta quindi posso sempre impostare un valore in cache o in session. Il problema è che non riesco a ?stoppare? il caricamento della pagina di popup in modo che possa aspettare per un tempo prefissato l?arrivo della pagina nascosta.

Paperino
Ferma il thread che sta eseguendo la richiesta. Quindi chi vede la popup, sembrerà che il server sta ancora processando o è lento.
Praticamente vuoi fare una specie di timeout, se passati quei tot di secondi è arrivata un'altra richiesta da quello stesso utente, ignori la richiesta di chiusura sessione?
Secondo me è un sistema bruttissimo. La prima cosa che fa un utente se vede una finestrella è quella di chiuderla (va bene se compare per mezzo secondo). Il timeout è troppo influenzabile dalla rete, dal server o dal client.
Se usi l'evento OnBeforeUnload nel frame nascosto, questo parte solo se uno cambia sito o chiude il browser, quindi perché fare tutto sto giro?
Anche se fai un signout della sessione credo che la finestra principale detenga ancora il cookie e che quindi sia valido ancora, mm, devo verificare, probabilmente non la rende più valida.

Ciao

Il mio blog
Homepage
11 messaggi dal 22 luglio 2003
Ricciolo ha scritto:
Ferma il thread che sta eseguendo la richiesta. Quindi chi vede la popup, sembrerà che il server sta ancora processando o è lento.
Praticamente vuoi fare una specie di timeout, se passati quei tot di secondi è arrivata un'altra richiesta da quello stesso utente, ignori la richiesta di chiusura sessione?
Secondo me è un sistema bruttissimo. La prima cosa che fa un utente se vede una finestrella è quella di chiuderla (va bene se compare per mezzo secondo). Il timeout è troppo influenzabile dalla rete, dal server o dal client.
Se usi l'evento OnBeforeUnload nel frame nascosto, questo parte solo se uno cambia sito o chiude il browser, quindi perché fare tutto sto giro?
Anche se fai un signout della sessione credo che la finestra principale detenga ancora il cookie e che quindi sia valido ancora, mm, devo verificare, probabilmente non la rende più valida.


La mia intenzione è quella di far apparire il popup solo per mezzo secondo fuori dallo schermo e con dimensioni ridotte. L?utente vede solo un pulsante sulla barra del menu e per un tempo molto basso.

Le richieste dovrebbero comunque arrivare molto vicine in quanto scatenate dallo stesso evento sul client (tieni presente che comunque il mio ambiente è una intranet)

L?evento OnBeforeUnload scatta anche al refresh quindi ho bisogno del marchingegno!

Per gestire il login dell?utente non sto utilizzando cookie ma variabili di sessione che devo appunto eliminare; potrebbe capitare che un utente chiuda inavvertitamente il browser ed io devo consentirgli di riconnettersi prima del timeout di sessione.
Il Time out di sessione non può essere eccessivamente basso altrimenti continuerei a chiedere all?utente di effettuare nuovamente il login!

In ogi caso anche a me questa soluzione , ammesso che la si possa applicare, non piace ma consono riuscito ad individuare altre soluzioni, hai suggerimenti da darmi?
Grazie

Paperino
11 messaggi dal 22 luglio 2003
PaperinoASpassoConLaVespa ha scritto:
Ricciolo ha scritto:
Ferma il thread che sta eseguendo la richiesta. Quindi chi vede la popup, sembrerà che il server sta ancora processando o è lento.
Praticamente vuoi fare una specie di timeout, se passati quei tot di secondi è arrivata un'altra richiesta da quello stesso utente, ignori la richiesta di chiusura sessione?
Secondo me è un sistema bruttissimo. La prima cosa che fa un utente se vede una finestrella è quella di chiuderla (va bene se compare per mezzo secondo). Il timeout è troppo influenzabile dalla rete, dal server o dal client.
Se usi l'evento OnBeforeUnload nel frame nascosto, questo parte solo se uno cambia sito o chiude il browser, quindi perché fare tutto sto giro?
Anche se fai un signout della sessione credo che la finestra principale detenga ancora il cookie e che quindi sia valido ancora, mm, devo verificare, probabilmente non la rende più valida.


La mia intenzione è quella di far apparire il popup solo per mezzo secondo fuori dallo schermo e con dimensioni ridotte. L?utente vede solo un pulsante sulla barra del menu e per un tempo molto basso.

Le richieste dovrebbero comunque arrivare molto vicine in quanto scatenate dallo stesso evento sul client (tieni presente che comunque il mio ambiente è una intranet)

L?evento OnBeforeUnload scatta anche al refresh quindi ho bisogno del marchingegno!

Per gestire il login dell?utente non sto utilizzando cookie ma variabili di sessione che devo appunto eliminare; potrebbe capitare che un utente chiuda inavvertitamente il browser ed io devo consentirgli di riconnettersi prima del timeout di sessione.
Il Time out di sessione non può essere eccessivamente basso altrimenti continuerei a chiedere all?utente di effettuare nuovamente il login!

In ogi caso anche a me questa soluzione , ammesso che la si possa applicare, non piace ma consono riuscito ad individuare altre soluzioni, hai suggerimenti da darmi?
Grazie


In ogni caso da quanto ho visto la pagina nascosta non viene elaborata fono a che la richiesta precedente non è esaurità! E' corretto?





Paperino
Eh sì, è un bel problema. Http è così, state less. Io generalmente punto sull'intelligenza dell'utente: faccio un bel esci.
Comunque tu non puoi sapere con certezza che arriverà prima la richieta della popup e dopo quella dell'effettivo refresh o viceversa.
Lo sleep ferma solo il thread dell'elaborazione della richiesta del popup. Nel frattempo lui può continuare ad elaborare altre richieste compresa quella di refresh fino al massimo di 25 threads contemporanei (almeno di default).
Può capitare inoltre per assurdo che venga richiamata la pagina di popup ed essere il 25 thread con la conseguenza che le successive richieste debbano aspettare che finisca.
Non è sicurissimo come sistema.
Al massimo puoi fare al contrario, timeout molto corto e una finestra di popup che si occupi di fare lo sliding della sessione visto che il problema della sessione corta sta nel fatto che un utente può stare anche 10 min a guardarsi una pagina, giusto?

Ciao

Il mio blog
Homepage
11 messaggi dal 22 luglio 2003
Ricciolo ha scritto:
Eh sì, è un bel problema. Http è così, state less. Io generalmente punto sull'intelligenza dell'utente: faccio un bel esci.
Comunque tu non puoi sapere con certezza che arriverà prima la richieta della popup e dopo quella dell'effettivo refresh o viceversa.
Lo sleep ferma solo il thread dell'elaborazione della richiesta del popup. Nel frattempo lui può continuare ad elaborare altre richieste compresa quella di refresh fino al massimo di 25 threads contemporanei (almeno di default).
Può capitare inoltre per assurdo che venga richiamata la pagina di popup ed essere il 25 thread con la conseguenza che le successive richieste debbano aspettare che finisca.
Non è sicurissimo come sistema.
Al massimo puoi fare al contrario, timeout molto corto e una finestra di popup che si occupi di fare lo sliding della sessione visto che il problema della sessione corta sta nel fatto che un utente può stare anche 10 min a guardarsi una pagina, giusto?

Hai perfettamente ragione! MI resta solo un dubio dai test che ho effettuato mi sembra che la pagina nascosta non venga elaborata fintanto che il rendere del popup non è terminato sebbene io faccia uso dell'istruzione sleep! Questo contrasta con quanto mi dici tu circa i 25 threads!.
Ciao

Paperino
Bloccando il thread della richiesta blocchi ovviamente anche la finestra, il popup o il frame che contiene la pagina richiesta, ma mica blocchi tutto il pc del client. Le altre richieste vanno lo stesso.

Ciao

Il mio blog
Homepage
11 messaggi dal 22 luglio 2003
Ricciolo ha scritto:
Bloccando il thread della richiesta blocchi ovviamente anche la finestra, il popup o il frame che contiene la pagina richiesta, ma mica blocchi tutto il pc del client. Le altre richieste vanno lo stesso.



Peccato!
Ho implementato lo stesso sistema in java (OC4j è l'application server) e li siamo riusciti a farlo funzionare!

Paperino

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.