Laden...

[gelöst] FileInfo MoveTo >> Datei wird von anderem Prozess verwendet ...

Erstellt von Maddinel vor 15 Jahren Letzter Beitrag vor 15 Jahren 5.099 Views
Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 15 Jahren
[gelöst] FileInfo MoveTo >> Datei wird von anderem Prozess verwendet ...

Hi,

ich habe folgendes Problem.
Über eine ASP.NET Webseite wird eine Datei hochgeladen. Auf einer anderen Unterseite, etwas später, muss diese Datei umbenannt werden ... an den Dateinamen muss ich einfach noch was dran hängen. Ich versuche die Datei folgendermaßen umzubenennen:

FileInfo FI     = new FileInfo(absolutePath);
                    string oldName  = FI.Name;
                    string newName  = string.Format("Auftr{0}_{1}", auftrNr, oldName);
                    string destPath = absolutePath.Replace(oldName, newName);
                    FI.MoveTo(destPath);

Ich teste das Ganze über den lokalen Testserver, also nicht online. Komischerweise bekomme ich meistens eine Fehlermeldung: "Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird." und zwischendurch funktionierts dann wieder mal. Auf die Datei greifen aber keine weiteren Programme zu, also ich verwende Sie nicht irgendwo bewusst.

Was könnte die Datei noch blockieren und warum nicht immer?

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

182 Beiträge seit 2006
vor 15 Jahren

Setze das FileInfo in eine using-Klausel, vlt hält er die im Speicher.

Real programmers don't comment.
If it was hard to write, it should be hard to understand!

3.971 Beiträge seit 2006
vor 15 Jahren

Nein das FileInfo ist nicht das Problem, es kommt erst zu der Meldung wenn die Datei wirklich von einem Prozess geöffnet wurde. Schau dir mal das Programm Unlocker an, es zeigt dir, welches Programm welche Datei noch offen hat und bei Bedarf die Datei auch freigeben.

Vermutung wäre hier, das der IIS die Datei noch offen hält.

Kannst du die Datei lesend öffnen?

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 15 Jahren

Der Unlocker meldet sich nicht. Lesend kann ich die Files öffnen.

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 15 Jahren

Bin zwar (noch) nicht 100% sicher, aber lag evtl. an den FileAttributes, also Schreibschutz. Ich setze mal standardmäßig die Attributes auf "normal" vor dem Umbenennen und bisher gehts auch scheinbar.

Edit: Doch nicht 🙁

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 15 Jahren

Scheinbar könnte es wirklich daran liegen, dass der IIS die Bilder belegt. Ich hab das hier gefunden, wo ein ähnliches Problem besprochen wird, allerdings liegt es hier scheinbar daran, dass das Bild vorher geöffnet wurde und der IIS sich deshalb druaf setzt, das mache ich allerdings nicht, ich öffne die Files ausschließlich über eine aspx-Seite.

http://www.mail-archive.com/asp.net@glengamoi.com/msg14850.html

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================

Maddinel Themenstarter:in
1.371 Beiträge seit 2004
vor 15 Jahren
Problem gelöst!

[PROBLEM GELÖST]

Es war wirklich der IIS. Es war im Prinzip genau das Problem, welches auf der Seite (Link) angesprochen wird. Allerdings wurde es bei mir nicht dadurch ausgelöst, dass das Bild direkt im Browser geladen wurde, sondern dadurch, dass es in der Anzeigedatei geöffnet und nicht wieder freigegeben wurde. Ich habe die Datei jetzt noch mal nachgeschaut und explizit alle möglichen Kanddaten, die auf die Datei zugreifen mit Dispose() zur Löschung freigegeben und siehe da, jetzt klappts.

==============================
Wenn ichs wüsst', würd' ich nicht fragen!!! 😁
==============================