2012-06-27 31 views
21

Không thiếu các câu hỏi về chủ đề này, nhưng tôi vẫn gặp sự cố. Đây là tình huống của tôi. Tôi đã có một dịch vụ mà tôi cần phải xem một con đường được chỉ định trong tập tin cấu hình. Nó hoạt động tuyệt vời khi tôi sử dụng một ổ đĩa cục bộ.FileSystemWatcher để xem đường dẫn UNC

Tuy nhiên, khi tôi thay đổi nó thành một cái gì đó như \\server2\secondary\temp\watch_folder dịch vụ không bắt đầu. Lỗi trong nhật ký là

Tên thư mục \\ server2 \ secondary \ temp \ watch_folder không hợp lệ.

Nếu tôi sao chép trực tiếp vào Windows Explorer, thư mục sẽ mở. Nếu tôi lấy mã của tôi và dán nó vào một ứng dụng Winforms cũ nó hoạt động tốt. Tôi đã thử tất cả các tài khoản "Đăng nhập với tư cách". Tôi đặt nó để sử dụng tài khoản Administrator, nhưng vẫn không có con xúc xắc.

Đây là mã của tôi:

_watcher = new FileSystemWatcher(); 
_watcher.Path = ConfigurationManager.AppSettings["WatchFolder"]; 
_watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; 
_watcher.Filter = "*.txt"; 
_watcher.Created += new FileSystemEventHandler(OnCreated); 
_watcher.Error += new ErrorEventHandler(OnError); 
_watcher.EnableRaisingEvents = true; 

Bất kỳ ý tưởng? Tôi đang thua lỗ và vào thời điểm này tôi nghĩ tôi đã nhìn chằm chằm vào nó quá lâu. Tôi chân thành cảm kích sự giúp đỡ nào.

Cảm ơn, Nick

EDIT Đây là ngoại lệ:

Dịch vụ không thể khởi động. System.ArgumentException: Tên thư mục \ server2 \ Secondary \ temp \ watch_folder không hợp lệ.
tại System.IO.FileSystemWatcher.set_Path (String value)
tại FileWatcher.FileWatcher.Watch()
tại FileWatcher.FileWatcher.OnStart (String [] args)
tại System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback (Object tiểu bang)

+0

Bạn có nghĩa là sự cố đã được giải quyết chưa? –

+0

Không, sự cố chưa được giải quyết. Tôi vẫn không thể bắt đầu dịch vụ. – nickfinity

+1

Bạn có gặp bất kỳ lỗi ngoại lệ nào không? Bạn có biết cách gỡ lỗi một Dịch vụ Windows không? Mọi thông tin về lỗi đều giúp ích. –

Trả lời

18

Tôi chỉ cố gắng này:

var _watcher = new FileSystemWatcher(); 
_watcher.Path = @"\\10.31.2.221\shared\"; 
_watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; 
_watcher.Filter = "*.txt"; 
_watcher.Created += new FileSystemEventHandler((x, y) =>Console.WriteLine("Created")); 
_watcher.Error += new ErrorEventHandler((x, y) =>Console.WriteLine("Error")); 
_watcher.EnableRaisingEvents = true; 
Console.ReadKey(); 

đó làm việc không có vấn đề, tuy nhiên tôi nhân rộng ngoại trừ của bạn chỉ khi:

  • Người dùng đang chạy không có quyền đọc thư mục từ xa.
  • Thư mục từ xa không tồn tại.

Vấn đề của bạn chắc chắn có liên quan đến quyền, tôi nghĩ rằng người dùng đang chạy không có quyền cần thiết.

Một thứ khác mà bạn có thể thử là ánh xạ thư mục từ xa đến một địa phương.

Execute này trong cmd:

NET USE Z: \\server2\Secondary\temp\watch_folder /user:Domain\UserName Password 

Sau đó, trong mã của bạn:

_watcher.Path = @"Z:\"; 
+1

Tôi gặp sự cố này và đó là sự cố về quyền trên thư mục. Cảm ơn đã giúp đỡ! – liebs19

+0

Tôi cũng gặp vấn đề này. Dịch vụ của tôi với FileSystemWatcher được thiết lập để giám sát một thư mục trên một ổ đĩa mạng như NetworkService, ** và đường dẫn có khoảng trống trong đó nên tôi nghĩ đó là vấn đề. ** Tôi đang chạy trên máy tính xách tay của mình. Sau khi đọc câu trả lời của bạn về các điều khoản, tôi đã cài đặt dịch vụ với FileSystemWatcher trên máy chủ ứng dụng và sự cố đã biến mất! Dịch vụ này có quyền phù hợp trong NetworkService khi chạy từ máy chủ ứng dụng đó. - Câu trả lời hữu ích! –

5

Dịch vụ của bạn có thể đang chạy trong tài khoản người dùng không có quyền chia sẻ đó. Hãy thử thay đổi dịch vụ windows để chạy dưới các thông tin đăng nhập khác nhau.

0

Bạn có thể cần phải có đường dẫn của bạn như

\\server2\\Secondary\\temp\\watch_folder 
+0

Bạn cần nhiều hơn hai dấu gạch chéo ở phía trước máy chủ2 để thực hiện theo cách đó: Thử \\\\ server2 \\ Secondary \\ temp \\ watch_folder –

0

Tôi cũng gặp sự cố này. Khắc phục của tôi là bao gồm tên miền của công ty chúng tôi trong đường dẫn máy chủ:

\\servername.company.com\directorytowatch 
Các vấn đề liên quan