File.Copy bloqueia o arquivo de origem após a conclusão
Estamos tentando copiar um arquivo de um servidor, para uma máquina local em um aplicativo .NET 2.0 (C #), mas continuamos tendo o arquivo de origem desnecessariamente bloqueado. Suspeitamos que algo configurado no servidor de arquivos esteja causando esse comportamento, mas não temos certeza do que ... você pode ajudar?
Após a operação de cópia do arquivo, o servidor de arquivos (Windows 2K3 R2) informa que o arquivo de origem está sendo retido com um bloqueio de leitura, mesmo que nenhuma outra operação seja feita com o arquivo no servidor. O bloqueio é liberado quando o aplicativo é encerrad
Somos capazes de reproduzir o comportamento, mesmo com o código mais básico visto abaixo:
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();
}
O bloqueio ocorre imediatamente durante oFile.Copy()
linha em execução e persiste após o término desta linha. Em um aplicativo mais complexo, quando a rotina com oFile.Copy()
sai (mas o aplicativo ainda está sendo executado), o bloqueio persist
Somente quando o aplicativo inteiro estiver concluído, o bloqueio será liberad
ChangingsourceFile
usar uma unidade mapeada em vez de um caminho UNC não faz diferença para o comportament
Este comportamento não ocorre quando o arquivo de origem está localizado em outro servidor ou localment
Se adicionarmos a seguinte linha após oFile.Copy
, o bloqueio é liberado imediatamente:
new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.Read, new string[] { sourceFile }).Demand();
Isso tudo nos parece que há algo no servidor que está causando esse comportamento. Temos o ShadowProtect instalado no servidor junto com o antivírus McAfee. Além disso, parece que não há mais nada instalado além do Windows Server e seus componente
Também não sabemos ao certo por que exigir uma permissão de leitura no arquivo resolve o problem
Se você pudesse responder a essas perguntas, agradeceríamos muito:
O que está causando a persistência dos bloqueios de arquivo?Por que exigir uma permissão de leitura resolve o problem