2012-03-27 14 views
0

Ich benutze DocumentBuilder (von openXML api), an diejenigen, die den documentBuilder nicht kennen, gebe ich eine kurze Erklärung: er hat eine Funktion 'BuildDocument', das eine Liste von Quellen erhält (jede Quelle enthält wmldocument) und eine Zeichenfolge von fileName, in der gespeichert werden soll.documentBuilder: Der Prozess kann nicht auf die Datei zugreifen, weil sie von einem anderen Prozess verwendet wird

public static void BuildDocument(List<Source> sources, string fileName) 

Zweck dieser Funktion ist es, ein Wort docx zu erstellen, das alle Quellen enthält. Es führt einige Dokumente zu einem zusammen. am Ende seiner Funktionalität speichert es die doc mit:

File.WriteAllBytes(...) 

aber wenn ich laufe mein Projekt auf dem Server ich den Fehler danach weiterhin: „Der Prozess nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird . " einige Male funktioniert es ok. und im VisualStudio funktioniert es auch ohne Fehler. Was kann das Problem sein?

+0

Verwenden Sie den gleichen Stream, um zu öffnen und zu schreiben? (Sie müssen möglicherweise mehr von Ihrem Code in Bezug auf das Öffnen, Lesen und Schreiben in diese Datei.) –

+0

Das Problem ist wahrscheinlich in dem Sie die 'BuildDocument' Methode aufrufen. Ist es möglich, diesen Teil des Codes zu bekommen? – GETah

Antwort

0

Ok, ich fand meinen Fehler, es war in meinem Code und nicht im DocumentBuilder. schrieb ich:

FileInfo f=new FileInfo.... 
    f.Create(); 

und ich habe schließen Sie es nicht. Ich musste den Code zu ändern: FileInfo f = neue FileInfo .... FileStream fs = f.Create(); fs.Schliessen(); Vielen Dank für Ihren Willen, mir zu helfen !!! Ich schätze das wirklich!

1

Wahrscheinlich ist die Dokumentdatei bereits geöffnet.

+0

gibt es: file.close(), natürlich !!! und ich habe den Code von buildDocument nicht geschrieben. Ich denke es ist etwas von Microsoft –

0

Überprüfen Sie nach dem Speichern der Sicherungsdatei, ob ordnungsgemäß geschlossen wurde. Wenn dies nicht der Fall ist, können Sie beim nächsten Versuch, die Datei zu öffnen und Text hinzuzufügen, den Fehler erhalten. Verwenden Sie etwas wie File.Close()

+0

gibt es: file.close(), natürlich !!! und ich habe den Code von buildDocument nicht geschrieben. Ich denke, es ist etwas von Microsoft –

+0

Überprüfen Sie, ob es ein Problem mit Berechtigungen gibt. –

Verwandte Themen