Câu hỏi FileSystemWatcher để xem đường dẫn UNC


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ộ.

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 khởi động. 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ở ra tốt. 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

CHỈNH SỬA Đây là ngoại lệ:

Không thể bắt đầu dịch vụ. System.ArgumentException: Tên thư mục \ server2 \ Secondary \ temp \ watch_folder không hợp lệ.
     tại System.IO.FileSystemWatcher.set_Path (giá trị chuỗi)
     tại FileWatcher.FileWatcher.Watch ()
     tại FileWatcher.FileWatcher.OnStart (String [] args)
     tại System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback (Trạng thái đối tượng)


21
2018-06-27 04:24


gốc


Bạn có nghĩa là vấn đề đã được giải quyết? - Marco Medrano
Không, vấn đề vẫn chưa được giải quyết. Tôi vẫn không thể bắt đầu dịch vụ. - nickfinity
Bạn có nhận được 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. - The Original Android
Tôi nghi ngờ có một cái gì đó độc đáo về thư mục \\ server2 \ ... watch_folder kể từ khi thư mục khác làm việc, như bạn nói. Xem lại quyền đọc / ghi chẳng hạn. - The Original Android
Là máy chủ bạn muốn xem chạy Windows? - Michael


Các câu trả lời:


Tôi vừa thử điều 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();

Điều đó làm việc mà không có vấn đề, tuy nhiên tôi nhân rộng ngoại lệ 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 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 thư mục cục bộ.

Thực hiện điều 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:\";

19
2018-06-27 16:53



Tôi đã gặp sự cố này và đó là sự cố cấp phép trên thư mục. Cảm ơn đã giúp đỡ! - liebs19
Tôi cũng có vấn đề này. Dịch vụ của tôi với một 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à con đường có không gian trong đó nên tôi nghĩ đó là vấn đề. Tôi đã chạy nó trên máy tính xách tay của tôi. 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! - Greg Barth


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.


5
2018-06-27 13:39





Tôi tìm thấy một cách thực sự mát mẻ để có được UNC với các thông tin làm việc với FileSystemWatcher trong một cửa sổ dịch vụ trên codeproject.

xem Adrian Hayes đăng bài: http://www.codeproject.com/Articles/43091/Connect-to-a-UNC-Path-with-Credentials

Giải pháp của ông làm việc một điều trị.


2
2017-12-03 14:37





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

\\server2\\Secondary\\temp\\watch_folder

0
2017-10-19 19:21



Bạn cần nhiều hơn hai dấu gạch chéo ở phía trước của server2 để làm theo cách đó: Thử \\\\ server2 \\ Secondary \\ temp \\ watch_folder - Greg Barth


Tôi cũng gặp phải vấn đề này. Sửa lỗi 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

0
2017-10-28 18:23