Frage

Wir versuchen, eine Datei von einem Server zu kopieren, bis hin zu einer lokalen Maschine in einer .NET 2.0-Anwendung (C #), aber halten Sie die Quelldatei unnötig gesperrt sind. Wir vermuten, dass es etwas auf dem Dateiserver konfiguriert ist, die dieses Verhalten verursachen, sind aber nicht sicher, was ... können Sie helfen?

Nach dem Dateikopiervorgang, meldet der Dateiserver (Windows 2K3 R2), dass die Quelldatei mit einem Lesesperre gehalten wird, auch wenn keine weitere Operation mit der Datei auf dem Server ausgeführt wird. Die Sperre wird freigegeben, sobald die Anwendung beendet wird.

Wir sind in der Lage, das Verhalten zu reproduzieren, selbst mit dem grundlegenden Code zu sehen unter:

static void Main(string[] args)
{
    string sourceFile = @"\\win2K3server\resource\Production\IQE\sourceFolder\iqeconsole.exe";
    string destinationFile = @"d:\destinationFolder\iqeconsole.exe";
    System.IO.File.Copy(sourceFile,destinationFile,true);

    Console.ReadLine();
}

Das Schloss occurrs sofort während der File.Copy() Linie ausgeführt wird, und weiterhin besteht, nachdem diese Zeile beendet hat. In einer komplexeren Anwendung, wenn die Routine mit dem File.Copy() Exits (aber die Anwendung noch ausgeführt wird), das Schloss weiterhin besteht.

Erst wenn die gesamte Anwendung beendet wird, ist die Sperre aufgehoben.

Ändern sourceFile ein zugeordnetes Laufwerk zu verwenden, macht statt einem UNC-Pfad keinen Unterschied zum Verhalten.

Dieses Verhalten tritt nicht, wenn die Quelldatei auf einem anderen Server befindet, oder lokal entfernt.

Wenn wir die folgende Zeile nach dem File.Copy hinzufügen, wird die Sperre freigegeben sofort:

new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.Read, new string[] { sourceFile }).Demand();

Das alles uns klingt, als ob es etwas auf dem Server vorhanden ist, die dieses Verhalten verursacht. Wir haben Shadow zusammen mit McAfee Anti-Virus auf dem Server installiert. Davon abgesehen, scheint es, als ob es nichts anderes installiert über und-über Windows-Server und seine Komponenten.

Wir sind auch nicht sicher, warum auf die Datei, die eine Leseberechtigung Anspruchsvolle löst das Problem.

Wenn Sie diese Fragen beantworten könnten, würden wir es sehr schätzen:

  1. Was die Dateisperren verursacht anhalten?
  2. Warum eine Leseberechtigung das Problem zu lösen ist Anspruchsvolle?
War es hilfreich?

Lösung

Es ist wahrscheinlich die McAfee On-Access-Scanner, der die Sperre hält. Wenn Sie nur Lesezugriff verwenden, wird umgangen. Ich glaube, dass Sie das Sysinternals Process Viewer-Tool (frei von Microsoft) verwenden können, das bestätigen.

Nicht sicher, welches Abonnement Sie McAfee haben, aber Sie können Ausnahmeregeln definieren, so dass es diese Datei nicht gescannt werden.

Andere Tipps

Ich bin nicht in der Lage diese auf unserem Fileserver zu replizieren.

Allerdings muss ich Opportunistic Locking wissen ist deaktiviert, da wir PeerLock von PeerSoftware verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top