Newsgroup: it.comp.www.asp
Titolo: Session_OnEnd, PWS e DeleteFile -- aiuto !

Ciao a tutti
mi potete aiutare ?
sto scrivendo del codice vbscript(ing) per "tracciare" le pagine visitate
sul mio sito da ogni ipotetico navigatore
ho pensato di scrivere una sub Session_OnStart nel global.asa che creasse un
file dal nome temporaneo sul server
e definisse una variabile session contenente il nome del file
ogni pagina .asp cosě avrebbe accesso a tale file e ci accoderebbe il titolo
della pagina
--- fino a qui tutto ok
il brutto viene quando devo spedirmi il contenuto del file via posta e poi
cancellarlo
allora:
ho scritto una sub Session_OnEnd nel global.asa che legge il contenuto del
file, lo posta e poi cancella il file in questione
il fatto č che non funziona. Il file non viene rimosso dall' hard disk.
Ora: per non intasare il WEB-SERVER ho sempre fatto girare il tutto sul mio
server personale (leggi PWS), che so, magari sul server in rete (leggi IIS)
funziona, perň vorrei prima dei ragguagli, se possibile.
vi accodo le due sub in questione.
PS non vogliatemene per il cattivo stile -- il vbscript per me č nuovo,
arrivo dal C++ (e ci rimango ;)) )
<SCRIPT LANGUAGE=VbScript RUNAT=Server>
Sub Session_OnStart
Dim fso, fc, fname, fp, fcounter, ct
set fso = Server.CreateObject("Scripting.FileSystemObject")
fname = Server.MapPath("cgi-bin/" & fso.GetTempName)
Set fc = fso.CreateTextFile(fname,TRUE)
Session("ftrackuser") = fname
fc.Close
Set fc = Nothing
' roba che serve per il counter
fp = Server.MapPath("cgi-bin\counter.txt")
if Session("ct") = "" then
 Session("ct") = ct
 ct = ct + 1
 Set fcounter = fso.CreateTextFile(fp, True)
 fcounter.WriteLine(ct)
else
 Set fcounter = fso.OpenTextFile(fp)
 ct = Clng(fcounter.ReadLine)
end if
' fine roba del counter
fcounter.Close
Set fso = Nothing
Set fcounter = Nothing
End Sub
</script>
<script language=VbScript RUNAT=Server>
Sub Session_OnEnd
Dim fso, ftrack, MyCDONTSMail
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set ftrack = fso.OpenTextFile(Session("ftrackuser"))
text = ftrack.ReadAll
ftrack.Close
fso.DeleteFile(Session("ftrackuser"))
Set ftrack = Nothing
Set fso = Nothing
Set MyCDONTSMail = CreateObject("CDONTS.NewMail")
       MyCDONTSMail.From= "
ma...@mesiti.it
"
       MyCDONTSMail.Subject="Visita al sito"
    MyCDontsMail.To="
ma...@mesiti.it
"
    MyBody = "IP address: " & Request.ServerVariables("REMOTE_ADDR") &
vbCrLf & vbCrLf
    MyBody = MyBody & "Totale Visite: " & Session("ct") & vbCrLf & "Pagine
visitate:" & VbCrLf
       MyCDONTSMail.Body= MyBody & text & VbCrLf
       MyCDONTSMail.Send
       set MyCDONTSMail=nothing
End Sub
</SCRIPT>

Ciao!
Ho avuto anch'io un problema simile, di recente, sotto IIS4.
Non mi funzionava la Session_OnEnd e ho fatto ricorso ad un link di logout
"manuale", come quelli che vedi spesso nella sezione della posta di provider
tipo IOL o Tiscalinet.
Luca =8-)

Senza guardare il codice, alcune osservazioni:
1. Sei sicuro che sul server, lo script funzioni, indipendentemente dalle
sessioni? Per testarlo basta tu lo copii in un'altra pagina e lo esegua,
cosě vedi se č lui che non va o la sessione.
2. Hai aspettato l'effettivo "scadere" automatico delle sessioni? Se il
timeout č 20 minuti, c'č da aspettare almeno quel tempo.
Sei sicuro che il global.asa che te inserisci venga effettivamente eseguito?
Ovvero: la cartella dove lo inserisci potrebbe NON essere la cartella
principale dell'applicazione, e quindi non verrebbe eseguito.
4. Poi, anche se non dovrebbe essere grave, non č necessario inserire un
  <script language=VbScript RUNAT=Server>
</script>
per ogni routine. Bastano all'inizio e alla fine.