Pergunta

Estamos tentando copiar um arquivo de um servidor, para baixo para uma máquina local em um .NET aplicativo 2.0 (C #), mas continuo tendo o arquivo de origem desnecessariamente bloqueado. Nós suspeitamos que é algo configurado no servidor de arquivos que está causando esse comportamento, mas não é certo o que ... Você pode ajudar?

Após a operação de cópia de arquivos, servidor de arquivos (Windows 2K3 R2) relatos de que o arquivo de origem está sendo realizada com um bloqueio de leitura, mesmo que nenhuma outra operação é feita com o arquivo no servidor. O bloqueio é liberada quando o quite de aplicação.

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

Os occurrs bloqueio imediatamente durante a linha File.Copy() execução e persiste após esta linha foi concluída. Em um aplicativo mais complexo, quando a rotina com as saídas File.Copy() (mas o aplicativo ainda está em execução), os persiste bloqueio.

Apenas quando toda a aplicação é acabado é o bloqueio liberado.

Alterar sourceFile usar uma unidade mapeada em vez de um caminho UNC não faz diferença para o comportamento.

Este comportamento não ocorre quando o arquivo de origem está localizado em outro servidor, ou está localizado no local.

Se somarmos a seguinte linha após a File.Copy, o bloqueio será liberado imediatamente:

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

Isso tudo soa para nós como se há algo no servidor que está causando esse comportamento. Nós temos ShadowProtect instalado no servidor, juntamente com McAfee anti-vírus. Além disso, parece que não há mais nada instalado sobre-e-acima Windows Server e seus componentes.

Estamos também não sei por Exigir uma permissão de leitura nos resolve o problema de arquivo.

Se você pudesse responder a estas perguntas, nós apreciaríamos muito:

  1. O que está causando os bloqueios de ficheiros de persistir?
  2. Por que Exigir uma permissão de leitura resolver o problema?
Foi útil?

Solução

É provavelmente o McAfee scanner de acesso que mantém o bloqueio. Se você só usar o acesso à leitura, ele é ignorado. Eu acredito que você pode usar a ferramenta Process Viewer Sysinternals (gratuito da Microsoft) para confirmar isso.

Não sei o que Subscrição que você tem para McAfee, mas você pode definir regras de exceção para que ela não verifica esse arquivo.

Outras dicas

Eu não sou capaz de replicar isso em nossos servidores de arquivos.

No entanto, eu sei O bloqueio oportunista está desativado já que estamos usando PeerLock por PeerSoftware.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top