Ich habe versucht, eine Datei zu sperren, damit andere geklonte Dienste nicht auf die Datei zugreifen können. Ich lese dann die Datei und verschiebe dann die Datei, wenn sie fertig ist. Die Verschiebung ist zulässig, indem FileShare.Delete
verwendet wird.Sperrverhalten unterscheidet sich über Netzwerkfreigaben
In späteren Tests fanden wir jedoch, dass dieser Ansatz nicht funktioniert, wenn wir eine Netzwerkfreigabe betrachten. Ich schätze, mein Ansatz war vielleicht nicht der beste, aber meine spezifische Frage lautet:
Warum funktioniert die folgende Demo gegen die lokale Datei, aber nicht gegen die Netzwerkdatei?
Je genauer Sie sein können, desto besser, da ich in meinen Suchen nur sehr wenige Informationen gefunden habe, die darauf hinweisen, dass sich Netzwerkfreigaben anders verhalten als lokale Festplatten.
string sourceFile = @"C:\TestFile.txt";
string localPath = @"C:\MyLocalFolder\TestFile.txt";
string networkPath = @"\\MyMachine\MyNetworkFolder\TestFile.txt";
File.WriteAllText(sourceFile, "Test data");
if (!File.Exists(localPath))
File.Copy(sourceFile, localPath);
foreach (string path in new string[] { localPath, networkPath })
{
using (FileStream fsLock = File.Open(path, FileMode.Open, FileAccess.ReadWrite, (FileShare.Read | FileShare.Delete)))
{
string target = path + ".out";
File.Move(path, target); //This is the point of failure, when working with networkPath
if (File.Exists(target))
File.Delete(target);
}
if (!File.Exists(path))
File.Copy(sourceFile, path);
}
EDIT: Es lohnt sich zu erwähnen, dass, wenn Sie die Datei von einem Netzwerkfreigabe verschieben wollen Aktie zu einem anderen Netzwerk, während das Schloss an seinem Platz ist, das funktioniert. Das Problem tritt nur auf, wenn Sie eine Datei innerhalb von derselben Dateifreigabe verschieben, während sie gesperrt ist.
Überprüfen Sie, ob Sie über Berechtigungen zum Schreiben in einem freigegebenen Ordner verfügen. – Nayan
Berechtigungen wurden überprüft und sind in Ordnung. Aktiver Benutzer hat Vollzugriff auf Verzeichnis und Freigabe – MattH
Welche Art von Betriebssystem bietet die Freigabe? –