Newsgroup: it.comp.www.asp
Titolo: Global.asa - problemi con il session_onend

gią tempo addietro ho avuto un problema e mi era stato spiegato che non si
puo' ivi utilizzare server.mappath.
Ora l'esecuzione del session_onend sembra fermarsi un un dim... č possibile?
Quali sono le limitazioni del session_onend?
Grazie
Ale


Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/
Tutto su WindowsNT? Su 
http://www.aspitalia.com
Libri ITA o ENG con sconti del 15% su 
http://store.aspitalia.com/
Tech Leader per 
http://www.e-conomy.it

Grazie :) sto diventando pazzo!
Il problema è che non riesco nemmeno a capire come fare il debug di un
global.asa! Quindi non mi rimane che il try&error ma qua l'error c'è ma non
riesco a trovarlo :)
Le application("prova") le ho usate solo per rendermi conto di dove si ferma
l'esecuzione.
Si blocca dove ho inserito i punti esclamativi... quelli non ci sono nel
listato originale :P
Grazie mille
Ale
sub session_onend()
 Application.Lock
  application("online")=application("online")-1
 Application.UnLock
 if ora(application("cleaning"))<=-1 then 'po passare a meno 2
  Application.Lock
   application("cleaning")=now()
  Application.UnLock
  nomefile="nomefile.txt"
  DatiDir="C:\Inetpub\Domains\
asp4free.ravenna2000.it
\opps75\dati\"
  dim  inFile, outFile
!!!!!!!!!!!!!!!!!!!!!!!!!!!!! si blocca qui
   Set fso = CreateObject("Scripting.FileSystemObject")
!!!!!!!!!!!!!!!!!!!!!!!!!!!! o qui!!!
  Application.Lock
   application("prova")="1"
  Application.UNLock
  If fso.FileExists(DatiDir&nomefile) Then
     newFile = fso.GetTempName
   Set outFile = fso.OpenTextFile(datidir&newFile, 2, True, 0)
   Set inFile = fso.OpenTextFile(DatiDir&nomefile, 1, False, 0 )
   Do While Not inFile.AtEndOfStream
    user=inFile.ReadLine()
    tempo=inFile.ReadLine()
    Application.Lock
    application("prova")=application("prova")&"Q"
    Application.UNLock
    if ((giorno(tempo)=0 and ora(tempo)= 0 and minuti(tempo)= 0 and
secondi(tempo)<15) or (giorno(tempo)=0 and ora(tempo)= 0 and
minuti(tempo)=-1 and secondi(tempo)>45) or (giorno(tempo)=0 and
ora(tempo)=-1 and minuti(tempo)=59 and secondi(tempo)>45) or
(giorno(tempo)=1 and ora(tempo)=23 and minuti(tempo)=59 and
secondi(tempo)>45)) then
    Application.Lock
        application("prova")=application("prova")&"L"
        Application.UNLock
     outFile.Writeline user
     outFile.Writeline tempo
    end if
   loop
   inFile.Close
   outFile.Close
   Set inFile = Nothing
   Set outFile = Nothing
    fso.DeleteFile DatiDir&nomefile
    fso.CopyFile DatiDir&newFile, DatiDir&nomefile
   'fso.MoveFile DatiDir&newFile, DatiDir&nomefile
   Application.Lock
   application("prova")=application("prova")&"H"
   Application.UNLock
  End If
  Set fso=Nothing
 end if
   end sub
 function giorno(stringa)
  giorno=clng(left(stringa,2))-clng(left(now(),2))
 end function
 function ora(stringa)
  ora=clng(mid(stringa,10,2))-clng(mid(now(),10,2))
 end function
 function minuti(stringa)
  minuti=clng(mid(stringa,13,2))-clng(mid(now(),13,2))
 end function
 function secondi(stringa)
  secondi=clng(right(stringa,2))-clng(right(now(),2))
 end function
</SCRIPT>

 riesco a trovarlo :)
[...]
il codice sembra corretto, ma se magari oltre al codice mi posti anche
l'errore, forse è meglio... ;-PP


Pardon forse non mi sono spiegato bene, l'errore è che si ferma dove ho
indicato...
Non saprei cosa dire di altro perchè essendo il session_onend non saprei
dove prendermi un output con l'errore.
Infatti se hai un consiglio su come effettuare un debugging (io uso
interdev) te ne sarei veramente grato.
Cmq per darti altre informazioni potrei spiegarti cosa dovrebbe fare quel
codice.
Io ho un file di testo che contiene la lista degli utenti online in quel
momento.
Ho strutturato il mio sito in modo tale che quando un utente è online è
visibile agli altri in una specie di contact list di ICQ (per ora primitiva
:) ). La contact list si riaggiorna automaticamente e scrive in un file
l'ora. Cosi' non devo aspettare che scada la sessione per mandarlo offline
ma mi basta guardare l'ultima volta che ha riscritto l'ora.
Ogni due ore il global.asa ripulisce questo file dagli utenti che non sono
piu' online ma che, non avendo fatto logout, non hanno tolto dal file il
loro nome.
Quindi la variabile application("cleaning") tiene in mente l'ultima volta
che ha fatto tale operazione.
Ogni fine sessione controlla tale variabile e se sono passate piu' di due
ore parte col il ripulire tale file.
So che c'è un baco nella funzione minuti fra la mezzanotte e le 9 la stringa
si accorcia di uno e sbaglia, non è comunque quello il problema perchè non
funziona mai questa routine e poi nella versione che ho caricato ora sul
server non c'è piu'.
Ti ringrazio comunque per la disponibilità.
Ciao
Alessandro