273 messaggi dal 01 aprile 2004
Ciao,

ho il seguente problema :

nella mia pagina creo un file pdf, la prima volta, quando il file non esiste va a buon fine, mentre la seconda volta non riesce a creare il file perchè risulta in uso !!!

questo è quello che faccio :

DF.DiskFileName = Name;
objRepDOC.ExportOptions.DestinationOptions = DF;
objRepDOC.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
objRepDOC.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
objRepDOC.Export();
objRepDOC.Dispose();

FileInfo file = new FileInfo(Name);

Response.Buffer = true;
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/pdf";

Response.ContentEncoding = System.Text.Encoding.UTF8;

Response.WriteFile(Name);
Response.Flush();
Response.Close();


Come mai, anche facendo la Dispose, il file risulta ancora in uso?

grazie

Ciao
Modificato da marcodonza il 17 ottobre 2008 08.41 -

Ciao,
DNZ
marcodonza wrote:
Come mai, anche facendo la Dispose, il file risulta ancora in uso?

perchè probabilmente il componente che uso non lo effettua.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
273 messaggi dal 01 aprile 2004
ma l'unico oggetto che usa il file è il objRepDOC, come faccio a sapere cos'è che tiene impegnato il file?

Ciao,
DNZ
273 messaggi dal 01 aprile 2004
Daniele Bochicchio ha scritto:
marcodonza wrote:
Come mai, anche facendo la Dispose, il file risulta ancora in uso?

perchè probabilmente il componente che uso non lo effettua.



Quando lo creo la prima volta va a buon fine, in quanto il file pdf non esiste ancora su disco. Se lo creo una seconda volta mi da questo errore :

The process cannot access the file '2008_0000000025_012067.PDF' because it is being used by another process.

Ciao,
DNZ
273 messaggi dal 01 aprile 2004
Daniele Bochicchio ha scritto:
marcodonza wrote:
Come mai, anche facendo la Dispose, il file risulta ancora in uso?

perchè probabilmente il componente che uso non lo effettua.



é il pool che lo tiene lockato !
come faccio a "liberarlo" ?

Ciao,
DNZ
marcodonza wrote:
é il pool che lo tiene lockato !
come faccio a "liberarlo" ?

no, è il codice che usi per crearlo. probabilmente il tuo oggetto ha un metodo Dispose e non lo richiami, prova a farlo.
se fai kill dell'app pool ovviamente ricicli tutto ed altrettanto ovviamente il file non è bloccato.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
273 messaggi dal 01 aprile 2004
ma l'unico oggetto che lo usa è quello del crystal (objRepDOC), il mio codice è questo :

DF.DiskFileName = Name;
objRepDOC.ExportOptions.DestinationOptions = DF;
objRepDOC.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
objRepDOC.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
objRepDOC.Export();
objRepDOC.Dispose();

Ciao,
DNZ
marcodonza wrote:
ma l'unico oggetto che lo usa è quello del crystal (objRepDOC), il mio codice è questo :

e DF cos'è? non vedo come viene creato e non vedo se ne fai il Dispose. inoltre, considera di usare un blocco using:
http://blogs.aspitalia.com/ricciolo/post2177/Usate-Statement-Using.aspx

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

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.