8 messaggi dal 31 maggio 2002
Ciao a tutti,
Ho un problema con la classe XmlTextWriter ed è il seguente:
la prima volta che eseguo il codice con la classe XmlTextWriter di per se nella cartella in cui ho diritto di scrittura il file non esiste, allora lo creo e fin li va tutto bene. Visto che questo file cambia di contenuti a seconda della posizione nel sito in cui mi trovo, estraggo i dati e sovrascrivo il file xml che ho creato la prima volta... Questo è il codice (lo stesso che uso quando creo il file la prima volta):

strXmlFileName = (Session.SessionID & ".xml")
Dim XmlTreeView As XmlTextWriter = New XmlTextWriter(Server.MapPath(Request.ApplicationPath & "/Menu_Xml/" & strXmlFileName), Nothing)


XmlTreeView.Formatting = Formatting.Indented
XmlTreeView.WriteStartDocument(false)
XmlTreeView.WriteComment("File Creato per gestire il menu TreeView dalla Pagina")
'Scrivo la radice fissa del file
XmlTreeView.WriteStartElement("TREENODES")


.... poi elaboro gli altri elementi e il file risulta well formed
'infine chiudo e assegno
Chiudo le risorse utilizzate per creare il file
XmlTreeView.Flush()
XmlTreeView.Close()

'Assegno al menu il file Xml
TreeViewMenu.Text = strRoot
TreeViewMenu.TreeNodeSrc = Server.MapPath(Request.ApplicationPath & "/Menu_Xml/" & strXmlFileName)
TreeViewMenu.DataBind()

Non so spiegarmi come mai dell'errore eppure rilascio il file e non dovrebbe essere una risorsa occupata come invece è. Se mi puoi dare un'aiuto te ne sarei grato.
Grazie ciao
Loris
2.198 messaggi dal 30 novembre 2001
scivi dopo la close:
XmlTreeView = Nothing
8 messaggi dal 31 maggio 2002
Grazie chiccosimo, ma non è sufficiente, mi dice che il file è in uso e lancia un'eccezione di Tipo System.IO.IOException.
Comunque è il file che sembra rimanere aperto e qualsiasi operazione tenti di fare su di esso non va a buon fine....
Non capisco...
Grazei lo stesso ciao
Loris
Modificato da lcabrin il 03 novembre 2003 11.17 -
2.198 messaggi dal 30 novembre 2001
io faccio la stessa cosa che fai tu, cioè scrivo e sovrqascrivo sempre lo stesso file xml, e non mi dà nessun problema, pgni tanto mi generava l'errore che hai avuto tu, ma perchè andava in errore l'intera pagina, ma riavviando iis non avevo problemi. Sei sicuro di aver messo le chiusure di tutti gli elementi che generi? il file xml te lo apre correttamente? prova a generare un semplice file xml, solo con intestazione e un elemento.

Ciao
8 messaggi dal 31 maggio 2002
Ho controllato anche il file la prima volta che viene generato, e lo apro tranquillamente. Avevo pensato anch'io che non fosse well formed, ma in explorer è tutto a posto.
Purtroppo non so proprio come risolvere questa cosa....
Mi hanno suggerito di mettere il codice in un blocco try catch per vedere il dettagli dell'errore istanziando la classe System.IOException..
Ora provo e poi ti dico come sono andate le cose, se a te nel frattempo vengono in mente altre possibili soluzioni, sono sempre tutto orecchi..
Grazie ancora
ciao
Loris
Magari è quello stupidino di TreeViewMenu  che lo apre non solo in lettura e poi non chiude, strano che quel controllo faccia una cavolata del genere. Prova, togliendo quella riga.
Metti comunque sempre il tutto tra try/finally il file va chiuso qualunque cosa succeda.
Tanto dallo stack trace non saprai mai chi l'ha lasciato aperto, se non facendo un bel debug e seguire passo passo, prova magari a sovrascrivere il file con il notepad (o cancellarlo) per vedere se è lockato quando non dovrebbe

Ciao

Il mio blog
Homepage
8 messaggi dal 31 maggio 2002
ho provato a togliere l'assegnazione al controllo ma non funziona; pensato anche alla classe XmlDocument, infatto ho gia provato, senza risultato, a cancellarlo, ma non me lo fa fare per lo stesso errore di prima, poi ho pensato di riscriverlo, ma appena gli do il Save mi dice che è ancora in uso e mi manda in errore l'applicazione.
I dati per l'aggiornamento di questo file xml vengono presi da data base, dopo di che estrapolo padri e figli e li inserisco nel file, di cui ne faccio il binding sul controllo TreeView..
Non so piu cosa guardare per farlo funzionare.....
grazie ciao
Loris
2.198 messaggi dal 30 novembre 2001
per renderlo disponibile quel file, devi riavviare iis altrimenti è sempre in uso.

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.