Domanda

Stiamo provando a copiare un file da un server, fino a un computer locale in un'applicazione .NET 2.0 (C #), ma continuiamo a bloccare inutilmente il file sorgente. Sospettiamo che sia qualcosa di configurato sul file server a causare questo comportamento, ma non siamo sicuri di cosa ... puoi aiutare?

Dopo l'operazione di copia del file, il file server (Windows 2K3 R2) segnala che il file di origine viene trattenuto con un blocco di lettura, anche se non viene eseguita alcuna ulteriore operazione con il file sul server. Il blocco viene rilasciato una volta chiusa l'applicazione.

Siamo in grado di riprodurre il comportamento, anche con il codice più semplice visto di seguito:

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();
}

Il blocco si verifica immediatamente durante l'esecuzione della riga File.Copy () e persiste al termine di questa riga. In un'applicazione più complessa, quando la routine con File.Copy () termina (ma l'applicazione è ancora in esecuzione), il blocco persiste.

Solo al termine dell'intera applicazione viene rilasciato il blocco.

La modifica di sourceFile per utilizzare un'unità mappata anziché un percorso UNC non fa alcuna differenza nel comportamento.

Questo comportamento non si verifica quando il file di origine si trova su un altro server o si trova localmente.

Se aggiungiamo la seguente riga dopo il File.Copy , il blocco viene rilasciato immediatamente:

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

Tutto questo ci suona come se ci fosse qualcosa sul server che sta causando questo comportamento. ShadowProtect è installato sul server insieme all'antivirus di McAfee. A parte questo, sembra che non ci sia nient'altro installato sopra Windows Server e i suoi componenti.

Non siamo inoltre sicuri del perché la richiesta di un'autorizzazione di lettura sul file risolva il problema.

Se potessi rispondere a queste domande, ti saremmo grati:

  1. Cosa causa la persistenza dei blocchi di file?
  2. Perché richiedere un'autorizzazione di lettura risolve il problema?
È stato utile?

Soluzione

Probabilmente è lo scanner all'accesso di McAfee che detiene il blocco. Se si utilizza solo l'accesso in lettura, viene ignorato. Credo che sia possibile utilizzare lo strumento Sysinternals Process Viewer (gratuito da Microsoft) per confermare.

Non sei sicuro di quale abbonamento hai per McAfee, ma puoi definire le regole di eccezione in modo che non esegua la scansione di questo file.

Altri suggerimenti

Non riesco a replicarlo sui nostri file server.

Tuttavia, so che il blocco opportunistico è disabilitato poiché stiamo usando PeerLock di PeerSoftware.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top