2009-03-02 30 views
21

Chúng tôi đang cố gắng sao chép tệp từ máy chủ, xuống máy cục bộ trong ứng dụng .NET 2.0 (C#) nhưng vẫn giữ tệp nguồn không cần thiết bị khóa. Chúng tôi nghi ngờ nó là một cái gì đó cấu hình trên máy chủ tập tin đó gây ra hành vi này, nhưng không chắc chắn những gì ... bạn có thể giúp đỡ?File.Copy khóa tập tin mã nguồn sau khi hoàn thành

Sau thao tác sao chép tệp, máy chủ tệp (Windows 2K3 R2) báo cáo tệp nguồn đang được giữ với khóa đọc, mặc dù không thực hiện thêm thao tác nào với tệp trên máy chủ. Khóa được giải phóng khi ứng dụng thoát.

Chúng tôi có thể để tái tạo hành vi, ngay cả với các mã cơ bản nhất nhìn thấy dưới đây:

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

Các khóa occurrs ngay trong dòng File.Copy() thực hiện, và vẫn còn sau khi dòng này đã hoàn tất. Trong một ứng dụng phức tạp hơn, khi thường trình với các lối thoát File.Copy() (nhưng ứng dụng vẫn đang chạy), khóa vẫn tồn tại.

Chỉ khi toàn bộ đơn đăng ký kết thúc là khóa được giải phóng.

Thay đổi sourceFile để sử dụng ổ đĩa được ánh xạ thay vì đường dẫn UNC không làm khác biệt hành vi.

Hành vi này không xảy ra khi tệp nguồn nằm trên máy chủ khác hoặc được định vị cục bộ.

Nếu chúng ta thêm dòng sau sau khi File.Copy, khóa được phát hành ngay lập tức:

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

này tất cả các âm thanh đối với chúng tôi như thể có cái gì đó trên máy chủ đó gây ra hành vi này. Chúng tôi có ShadowProtect được cài đặt trên máy chủ cùng với McAfee chống vi-rút. Bên cạnh đó, nó xuất hiện như thể không có gì khác được cài đặt trên và trên Windows Server và các thành phần của nó.

Chúng tôi cũng không chắc tại sao Yêu cầu quyền đọc trên tệp giải quyết được sự cố.

Nếu bạn có thể trả lời những câu hỏi này, chúng tôi sẽ đánh giá cao nó rất nhiều:

  1. gì đang gây ra khóa tập tin để tồn tại?
  2. Tại sao yêu cầu quyền đọc giải quyết được sự cố?
+0

CẬP NHẬT: sự cố này không còn có thể tái tạo. Dường như nó đã tự giải quyết. Chúng tôi không thể xác nhận rằng McAfee cũng đang gây ra sự cố (nhưng điều này có thể liên quan đến vấn đề giải quyết trong khi chúng tôi đang điều tra). – Jayden

+1

@Jarden: Tôi đã có cùng một vấn đề với File.Copy. Nếu câu lệnh kế tiếp sau File.Copy() là Delete - nó báo cáo ngoại lệ truy cập. Vấn đề đã xảy ra không xác định, nhưng phương thức Demand() ở trên đã giải quyết được vấn đề. Theo như tôi có thể thấy vấn đề này là độc lập với phần mềm chống vi-rút. – PanJanek

+0

Tôi có cùng một vấn đề nhưng chắc chắn nó không phải là McAfee, Im đang chạy AVG, nhưng tôi đã vô hiệu hóa tập tin. Tôi đang sử dụng Unlocker để cho tôi biết những gì đang khóa tập tin và nó đồng ý nó là ứng dụng của tôi. Vì vậy, tôi đoán các jurys vẫn ra !! Tuy nhiên việc triển khai giải pháp của bạn giải quyết được vấn đề của tôi nên Im vui vẻ trong thời gian này là –

Trả lời

4

Đây có lẽ là máy quét truy cập McAfee chứa khóa. Nếu bạn chỉ sử dụng quyền truy cập đọc, nó sẽ bị bỏ qua. Tôi tin rằng bạn có thể sử dụng công cụ Sysinternals Process Viewer (miễn phí từ Microsoft) để xác nhận điều đó.

Không chắc chắn bạn đã đăng ký McAfee, nhưng bạn có thể xác định các quy tắc ngoại lệ để nó không quét tệp này.

+0

Xin chào. Cảm ơn chúng tôi đang điều tra điều này hiện nay. – Jayden

+0

Đối với hồ sơ, chúng tôi không thể xác nhận rằng đây là sự cố khi sử dụng Trình xem quy trình. Vấn đề dường như đã tự giải quyết một cách bí ẩn, mặc dù các chàng trai máy chủ của chúng tôi nói rằng họ không làm gì với máy chủ! Câu trả lời của bạn là "tốt nhất" vì vậy đã trao cho bạn những điểm. Cảm ơn bạn đã giúp đỡ. – Jayden

+0

Cảm ơn, nhưng McAfee vẫn là một ứng cử viên tốt, kể từ khi tôi thường xuyên chạy vào này sau khi sao chép các tập tin xung quanh. Tôi đã giết McAfee On Access Scanner, sau đó tôi có thể xóa các tập tin. – cdonner

0

Tôi không thể sao chép điều này trên máy chủ tệp của mình.

Tuy nhiên, tôi biết Khóa cơ hội bị tắt vì chúng tôi đang sử dụng PeerLock by PeerSoftware.

Các vấn đề liên quan