문제

우리는 서버에서 .NET 2.0 응용 프로그램 (c#)의 로컬 컴퓨터로 파일을 복사하려고하지만 소스 파일이 불필요하게 잠겨 있습니다. 우리는 그것이 파일 서버 에서이 동작을 일으키는 것으로 구성된 것으로 의심하지만, 무엇을 도울 수 있는지 확실하지 않습니까?

파일 복사 작업 후 파일 서버 (Windows 2K3 R2)는 서버의 파일에서 더 이상 작동하지 않더라도 소스 파일이 읽기 잠금으로 유지되고 있다고보고합니다. 응용 프로그램이 종료되면 잠금이 해제됩니다.

아래에서 볼 수있는 가장 기본적인 코드에서도 동작을 재현 할 수 있습니다.

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

잠금은 즉시 발생합니다 File.Copy() 이 라인이 완료된 후에도 라인 실행 및 지속됩니다. 더 복잡한 응용 프로그램에서 File.Copy() 종료 (그러나 응용 프로그램이 여전히 실행 중임), 잠금이 지속됩니다.

전체 애플리케이션이 완료된 경우에만 잠금이 해제됩니다.

바꾸다 sourceFile UNC 경로 대신 매핑 된 드라이브를 사용하면 동작에 차이가 없습니다.

이 동작은 소스 파일이 다른 서버에 있거나 로컬에 위치 할 때 발생하지 않습니다.

다음 줄을 추가하면 File.Copy, 자물쇠는 즉시 릴리스됩니다.

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

이것은 서버 에이 동작을 일으키는 무언가가있는 것처럼 우리에게 들립니다. McAfee Anti-Virus와 함께 서버에 ShadowProtect를 설치했습니다. 그 외에도, 오버 및 가방 Windows 서버와 해당 구성 요소가 설치되지 않은 것처럼 보입니다.

또한 파일에 대한 읽기 권한을 요구하면 문제가 해결되는 이유도 확실하지 않습니다.

이 질문에 대답 할 수 있다면 크게 감사하겠습니다.

  1. 파일 잠금이 지속되는 원인은 무엇입니까?
  2. 읽기 권한을 요구하는 것이 문제를 해결하는 이유는 무엇입니까?
도움이 되었습니까?

해결책

잠금 장치를 보유하는 것은 McAfee 온 액세스 스캐너 일 것입니다. 읽기 액세스 만 사용하는 경우 우회됩니다. Sysinnals Process Viewer 도구 (Microsoft가 무료)를 사용하여이를 확인할 수 있다고 생각합니다.

McAfee에 어떤 구독이 있는지 확실하지 않지만이 파일을 스캔하지 않도록 예외 규칙을 정의 할 수 있습니다.

다른 팁

파일 서버에서 이것을 복제 할 수 없습니다.

그러나 Peersoftware의 Peerlock을 사용하고 있기 때문에 기회주의 잠금이 비활성화되어 있음을 알고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top