Il processo non può accedere al file "percorso del web.sitemap" perchè...

mercoledì 21 marzo 2012 - 16.19
Tag Elenco Tags  VB.NET  |  .NET 3.5

zseven Profilo | Senior Member

Ciao ragazzi,
come da oggetto sto avendo un problema quando inserisco da pannello di controllo degli articoli nel database.
Oltre ad inserirli nel db vado ad aggiornare il file web.sitemap per creare il sistema di navigazione interno del sito.

Purtroppo mi viene restituito spessissimo questo errore.
Sapreste dirmi da cosa dipende, e cosa bisogna fare per evitare che compaia questo errore?

Grazie mille

Gluck74 Profilo | Guru

ci fai vedere un po di codice? ci dici su quale riga hai l'errore?

grazie

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

zseven Profilo | Senior Member

Dunque in fase di inserimento dopo aver inserito tutto nel db faccio partire questa prima Sub

Sub InserisciXML(ByVal Nome As String, ByVal id_tree As Integer) DocXml.Load(Server.MapPath("/web.sitemap")) Dim nodelist As XmlNodeList = DocXml.DocumentElement.ChildNodes ProcessaNodi(nodelist, Nome, id_tree) End Sub


Che come vedi a sua volta chiama la Sub ProcessaNodi.
Ti scrivo di seguito la routine, l'errore è alla fine dove c'è il comando Save.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Grazie mille

Gluck74 Profilo | Guru

DocXml che cosa è?
un System.Xml.XmlDocument?

Dunque, non ho trovato le specifiche, ma credo che XmlDocument.Load apra il file il Share.Read, quindi il file rimane bloccato in sola lettura.
tu fai il load dentro una funzione, ed il salva dentro un altra.
Trasforma la tua ProcessaNodi in modo da prendere la XmlNodeList come reference
poi sposta il salva nella sub principale

ciao

zseven Profilo | Senior Member

Sì DocXml è proprio quello
Dim DocXml As New XmlDocument()

Ho capito il tuo ragionamento, ma purtroppo non so come applicarlo, non so come fare a fare la trasformazione che mi dici, ovvero prendere la XmlNodeList come reference.

Potresti darmi qualche aiuto di codice?

Grazie

Gluck74 Profilo | Guru

oh mamma, oramai sono 8 anni che non tocco VB!!!!!

dovrebbe bastare mettere ByRef al posto di ByVal sul parametro della funzione nella definizione....


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

zseven Profilo | Senior Member

Ho provato con Byref al posto di Byval, ma il risultato purtroppo non cambia.
In fase di modifica ha di nuovo dato errore sull'accesso al file.
La cosa strana però è che non lo fa sempre, a volte dà errore e a volte no.

Gluck74 Profilo | Guru

bisognerebbe spulciare bene il codice e vedere come mai va in blocco il file.
Considera che un sito web è un'applicazione multithread, potrebbe essere questo il motivo per cui a volte si blocca a volte no. (a volte ci sono dei già dei thread che leggono, a volte no)

ti suggerisco quindi di seguire la soluzione che ti ho scritto nell'altro post, ovvero passare ad un provider per SQL e spostare tutto du DB.
http://msdn.microsoft.com/it-it/magazine/cc163787(en-us).aspx

ciao

____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5