Вопрос по filesystemwatcher, c# – FileSystemWatcher для просмотра UNC-пути

22

В этой теме нет недостатка в вопросах, но у меня все еще есть проблемы. Вот моя ситуация. У меня есть служба, которая мне нужна, чтобы посмотреть путь, указанный в файле конфигурации. Это прекрасно работает, когда я использовал локальный диск.

Тем не менее, когда я изменяю что-то вроде\\server2\secondary\temp\watch_folder служба не запускается. Ошибка в журнале

The directory name \\server2\secondary\temp\watch_folder is invalid.

Если я копирую это прямо в Windows Explorer, папка открывается нормально. Если я возьму свой код и вставлю его в старое приложение Winforms, он будет работать нормально. Я перепробовал все "Войти в систему как" Счета. Я настроил его, чтобы использовать учетную запись администратора, но по-прежнему нет кости.

Вот мой код:

_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;

Есть идеи? Я в растерянности, и в этот момент я думаю, что слишком долго на это смотрел. Я искренне ценю любую помощь.

Спасибо, Ник

EDIT Вот исключение:

Service cannot be started. System.ArgumentException: The directory name \server2\Secondary\temp\watch_folder is invalid.
at System.IO.FileSystemWatcher.set_Path(String value)
at FileWatcher.FileWatcher.Watch()
at FileWatcher.FileWatcher.OnStart(String[] args)
at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

Вы имеете в виду, что проблема была решена? Marco Medrano
Сервер, который вы хотите наблюдать, работает под управлением Windows? Michael
Я подозреваю, что в каталоге \\ server2 \ ... watch_folder есть что-то уникальное, поскольку другие каталоги работают, как вы сказали. Посмотрите разрешения на чтение / запись, например. The Original Android
Нет, проблема не решена. Я все еще не могу запустить службу. nickfinity
Вы получаете ошибки исключения? Знаете ли вы, как отладить службу Windows? Любая информация об ошибках помогает. The Original Android

Ваш Ответ

5   ответов
0

\\server2\\Secondary\\temp\\watch_folder
Чтобы сделать это, вам нужно больше двух косых черт перед server2: Попробуйте \\\\ server2 \\ Secondary \\ temp \\ watch_folder
5

ваш сервис работает под учетной записью пользователя, у которого нет разрешения на этот общий ресурс. Попробуйте изменить службу Windows для запуска с другими учетными данными.

2

работающими с FileSystemWatcher в службе Windows на codeproject.

см. сообщение Адриана Хейса:http://www.codeproject.com/Articles/43091/Connect-to-a-UNC-Path-with-Credentials

Его решение работает удовольствие.

0

й компании в путь к серверу:

\\servername.company.com\directorytowatch
20

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

Это работает без проблем, однако я повторил ваше исключение только тогда, когда:

The running user doesn't have permissions to read the remote folder. The remote folder doesn't exist.

Ваша проблема, безусловно, связана с разрешениями, я думаю, что у запущенного пользователя нет необходимых разрешений.

Другая вещь, которую вы можете попробовать - это сопоставить удаленную папку с одной локальной.

Выполните это в cmd:

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

Тогда в вашем коде:

_watcher.Path = @"Z:\";
У меня была эта проблема, и это была проблема с правами доступа к папке. Спасибо за помощь!
У меня тоже была эта пробема. Мой сервис с FileSystemWatcher был настроен для мониторинга папки на сетевом диске как NetworkService,and the path has spaces in it so I thought that was the problem. Я запускал его на своем ноутбуке. Прочитав ваш ответ о разрешениях, я установил службу с FileSystemWatcher на сервере приложений, и проблема исчезла! Служба имеет необходимые разрешения в разделе NetworkService при запуске с этого сервера приложений. - Полезный ответ!

Похожие вопросы