우리는 서버에서 .NET 2.0 응용 프로그램 (C#)의 로컬 시스템으로 파일을 복사하려고하지만 소스 파일을 불필요하게 잠그고 있습니다. 파일 서버에이 동작을 일으키는 구성 요소가있는 것 같지만 무엇이 도움이 될지 모르겠습니다.File.Copy는 완료 후 소스 파일을 잠급니다.
파일 복사 작업 후 파일 서버 (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()
을 가진 루틴이 종료 될 때 (그러나 응용 프로그램은 여전히 실행 중일 때) 잠금이 유지됩니다.
전체 응용 프로그램이 완료되었을 때만 잠금이 해제됩니다.
을 변경하면 UNC 경로 대신 매핑 된 드라이브를 사용하여 동작이 변경되지 않습니다.
소스 파일이 다른 서버에 있거나 로컬에있는 경우에는이 문제가 발생하지 않습니다. 우리가 File.Copy
후 다음 줄을 추가하는 경우
, 잠금은 즉시 해제 :이 동작의 원인이되는 서버에 뭔가가있는 것처럼
new System.Security.Permissions.FileIOPermission(System.Security.Permissions.FileIOPermissionAccess.Read, new string[] { sourceFile }).Demand();
이 우리 모두에게 들린다. 우리는 McAfee 안티 바이러스와 함께 서버에 ShadowProtect를 설치했습니다. 그 외에도 Windows Server와 그 구성 요소가 이상 설치되어있는 것처럼 보입니다.
왜 파일에 대한 읽기 권한 요구가 문제를 해결하는지 확신 할 수 없습니다. 당신이이 질문에 대답 할 수 있다면
, 우리는 크게 감사하겠습니다 : 지속하기 위해 파일 잠금의 원인이 무엇
- ?
- 왜 읽기 권한 요구가 문제를 해결합니까?
업데이트 :이 문제는 더 이상 재현 할 수 없습니다. 그것은 스스로 해결 한 것으로 보인다. McAfee에서 문제의 원인을 확인하지 못했습니다 (그러나 조사하는 동안 문제가 해결 될 수 있습니다). – Jayden
@Jarden : File.Copy와 같은 문제가있었습니다. File.Copy() 다음에 나오는 명령문이 Delete 인 경우 Exception에 대한 액세스가보고됩니다. 문제는 비 결정적으로 발생했지만 위의 Demand() 메서드로 문제가 해결되었습니다. 내가 아는 바로는이 문제는 바이러스 백신 소프트웨어와 별개입니다. – PanJanek
나는 똑같은 문제가 있지만 McAfee, Im AVG를 실행하는 것은 아닙니다.하지만 파일 montior가 비활성화되어 있습니다. 언락 (Unlocker)을 사용하여 파일을 잠그고있는 것을 말해 주며 그것이 내 응용 프로그램이라는 데 동의합니다. 그래서 나는 배심원이 아직도 밖에 나온다고 생각한다 !! 그러나 귀하의 솔루션을 구현하면 내 문제를 해결하므로 시간이 내 행복 –