Prova a mettere un try/catch
probabilmente non hai i diritti di scrittura sulla cartella
Ciao Antonio, ora provo, il comportamento strano ora ho messo un try/catch cosi fatto :
Try
f = GetFolderItem(name,0)
'f = new FolderItem(name,FolderItem.PathTypeShell)
f = SpecialFolder.Documents.Child(name)
t = f.CreateBinaryFile("pdf")
t.Write me.buffer
t.close
App.MyFile = WebFile.Open(f)
App.MyFile.ForceDownload = True
Session.ShowURL(App.MyFile.URL, TRUE)
Catch e As NilObjectException
Exception err as NilObjectException
MsgBox err.message+" Error No.: "+Str(err.ErrorNumber)
End Try
E’ corretto?
Ho rimesso il programma in ftp e non mi da pi errore… il codice non l’ho toccato per
Faccio un po di test e vediamo.
Grazie sempre
leggera rettifica a quanto sopra, dopo un po di tempo mi ritorna a dare il problema senza che io aggiorni nulla, il server un Centos7 in cui gira apache, ora con il try/catch non ritorna nulla ma non si blocca il programma, forse a impostare il catch su “NilObjectException” ?
sempre grazie
Scusami ma oggi non ho avuto tempo di verificare …
Devi creare una routine che controlla se il file PDF gi esistente e se esistente lo cancella.
Oppute crea un file pdf con un nome univoco; in questo modo volendo puoi archiviarli.
L’errore NilObjectException viene generato appunto quanto il file gi presente con lo stesso nome.
L’errore NilObjectException pu essere dato da f, se ad esempio il percorso non raggiungibile
da t se non riesce a creare il file
Essendo un’applicazione web magari sono due utenti che creano lo stesso file.
Visto che hai identificato l’errore puoi trovare strategie per risolverlo.
Quando testi un’app web in locale hai, di solito, accesso alle cartelle con tutti i permessi e un utente solo.
Puoi provare a dividere l’azione tipo:
dim f as folderItem
try
f = GetFolderItem(name,0)
Catch e As NilObjectException
MsgBox e.message+" Error No.: “+Str(e.ErrorNumber)
f=nil
end try
if f<>nil then
dim t as BinaryStream
try
t= f.CreateBinaryFile(“pdf”)
catch e As NilObjectException
MsgBox e.message+” Error No.: "+Str(e.ErrorNumber)
t=nil
end try
if t<>nil then
t.write me.buffer
end if
end if
Non c’ bisogno di chiudere t tanto va fuori scopo