Avatar billede torotune Nybegynder
27. oktober 2008 - 09:27 Der er 9 kommentarer og
1 løsning

XML - Used by another process

Hej,

Jeg har en side der ved Page_load() danner og skriver dynamisk indhold til to XML-filer, som derefter bliver læst på siden.

Men i perioder kommer der en fejl, og det ser ud som om at det er når der er flere brugere der åbner siden og skriver til filerne samtidigt. Fejlen siger noget med at filen ikke kan dannes fordi den er  "Used by another process".

Hvordan kan man sikre sig mod at der kommer en konflikt der med samtidige brugere?
Avatar billede erikjacobsen Ekspert
27. oktober 2008 - 09:39 #1
Du kan give filerne forskellige navne, for forskellige brugere. Eller helt undlade at bruge filer, måske.
Avatar billede kalp Novice
27. oktober 2008 - 09:40 #2
du bliver nød til, at fortælle hvorfor du overhovedet har lavet 2 XML filer.
hvorfor har du lavet det sådan?
måske har du valgt en helt forkert approach!
Avatar billede torotune Nybegynder
27. oktober 2008 - 10:41 #3
erikjacobsen -> Det var selvfølgelig en mulighed at give filerne et random navn for den enkelte bruger. 

Jeg opretter filerne fordi de henter nogle billstier fra en databse og skriver dem ind i XML-filerne. Herefter er der så en Flash-komponent som læser XML'en og viser billederne. Billederne der vises skiftes ofte i databasen, så det er derfor jeg henter dem ud hver gang siden vises.

XML'erne dannes via en metode som denne:

    'Dan XML-filer ufra DB
    Public Shared Sub createXML(ByVal XmlPath As String, ByVal strSQL As String)
        Try
            Dim enc As Encoding

            Dim objXMLTW As New XmlTextWriter(XmlPath, enc)
            objXMLTW.WriteStartDocument()
            objXMLTW.WriteStartElement("options")
            objXMLTW.WriteStartElement("Items")

            'Opret forbindelse til DB og hent data ind i XML
            conn = New OleDbConnection(cs)
            conn.Open()

            cmd = New OleDbCommand(strSQL, conn)
            rs = cmd.ExecuteReader()

            While rs.Read
                'Skriv til XML-elemtenterne og deres
                'Indhold til
            End While

            cmd.Dispose()
            conn.Close()

            objXMLTW.WriteEndElement()
            objXMLTW.WriteEndDocument() 'Luk elementerne
            objXMLTW.Flush() 'Skriv filen
            objXMLTW.Close()
        Catch Ex As Exception
            response.write(Ex.ToString())
        End Try
    End Sub
Avatar billede erikjacobsen Ekspert
27. oktober 2008 - 11:09 #4
Din Flash-dims kan vel hente XML-data fra et script, i stedet for fra en fil.
Avatar billede aaberg Nybegynder
27. oktober 2008 - 12:10 #5
Du kan eventuelt bruge en generic handler til dynamisk at bygge xml filen, hver gang den skal bruges. Så slipper du alt det bøvl du får ved at skrive til filer på filsystemet. Fra dit flash komponent, skal du vælge url'en på din generic handler, i stedet for url'en på xml-filen.

Her er der et eksempel, hvor der via en generic handler dynamisk bliver genereret et billede som vises på en hjemmeside, uden at billedet først bliver gemt på filsystemet. Det kan nemt overføres til dit eksempel.
http://community.bartdesmet.net/blogs/bart/archive/2006/09/19/4450.aspx
Avatar billede torotune Nybegynder
19. november 2008 - 09:39 #6
Hej igen. Min løsning bliver enten at lade være med at opbygge XML'filerne hver gang - så bliver siden også mindre tung, eller også at give filerne et random- eller bruger specifikt navn for hver gang.

aaberg cc -> Jeg tror jeg vil anvende denne metode næste gang der skal laves noget tilsvarende fra bunden!

Læg et svar alle sammen :-)
Avatar billede erikjacobsen Ekspert
19. november 2008 - 09:45 #7
Ingen point til mig, tak.
Avatar billede aaberg Nybegynder
19. november 2008 - 09:46 #8
:-)
Avatar billede kalp Novice
19. november 2008 - 10:31 #9
heller ikke point til mig her=)
Avatar billede torotune Nybegynder
14. januar 2009 - 10:31 #10
Jeg siger tak for æ hjælp..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester