Errore accesso file

giovedì 25 ottobre 2007 - 00.40

nullatore Profilo | Junior Member

Salve gente,

da una mia webapplication cerco di cancellare un file memorizzato sul server tramite il metodo System.IO.File.Delete()
ma ottengo ogni tanto (è raro devo ammetterlo) questo errore:

"The process cannot access the file 'D:\Inetpub\webs\.......' because it is being used by another process."

E' colpa del mio hoster che è veramente lazy?

Grazie.



~nullatore~
mai dire corto circuito virtuale

us01739 Profilo | Expert

Bhe, non so se si può ricondurre al tuo caso, ma abbastanza spesso questo errore lo hai quando crei un oggetto che utilizza il file (ad esempio uno stream per leggerlo) e un'altro processo prova a cancellarlo o rinominarlo prima che l'oggetto precedente sia stato distrutto...
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
http://www.robertogelmini.com
---------------------------------------------------

pozzoli.samuele Profilo | Senior Member

Potrebbe essere che effettivamente sia così (usato...)!

Io, fossi nei tuoi panni... Se la cancellazzione, non la devi fare 2000 volte al giorno... Proverei... M'arrischierei a lanciare un thread... che ogni 10 secondi, metti... prova a cancellare. O finchè non riesce, o finchè... metti... non è passata un'ora... o ha fatto 500 tentativi... Tipo...

Dipende quanto è indispensabile cancellarlo.

Potresti eventualmente provare ad uccidere il processo che lo usa, me te lo sconsiglio. Se il processo fosse quello di iis? Uccideresti tutto il sito. Per non pensare anche peggio.

nullatore Profilo | Junior Member

Non posso escluderlo ma le probabilità che un altro utente della webapplication (e quindi un altro processo) stesse usando proprio quel file sono proprio basse.
Potrebbe essere un problema di hoster? (nel mio caso Aruba)

Cmq, così tanto per parlare, il problema della cancellazione fisica del file non è vitale; l' importante è che venga cancellato il suo riferimento su DB...poi se l'operazione di deleting "fisica" non ha successo il sistema segna su un file di testo quei files ormai rimasti appesi. Poi provvedo a cancellazione manuale.


~nullatore~
mai dire corto circuito virtuale

nullatore Profilo | Junior Member

Ragazzi ho scoperto proprio adesso una cosa importante:

guardando i log della webapplication mi sono accorto che l'errore è sopraggiunto dopo che l'utente abbia lanciato il file e successivamente (lo stesso utente,dopo 1 tornata di request-postback) cancellato.
Come se la GC lasciasse vivo l'oggetto FileStream aperto nella prima fase.....

ma allora mentre io mi riguardardo il modo corretto di accedere ai file, parallelamente, mi potete dire qual'e' la "best-practice" per il lancio di un file salvato su server?

~nullatore~
mai dire corto circuito virtuale
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5