Служба Windows работает при тестировании, но не как Служба - PullRequest
1 голос
/ 22 сентября 2010

Я создал службу Windows, которая просматривает каталог, используя FileSystemWatcher, и когда файл помещается в папку, он архивирует его.

Все функциональные возможности находятся в созданном мною классе с именем FileProcessor.

Когда я создаю консольное приложение, которое использует FileProcessor, автоматическое архивирование работает отлично. Однако когда я запускаю класс в службе Windows, он никогда не работает.

Ответы [ 3 ]

5 голосов
/ 22 сентября 2010

Похоже, что права доступа к файлам могут вас испортить.Под какой учетной записью работает служба?

3 голосов
/ 22 сентября 2010

Проверьте учетную запись и каталог, под которым работает ваша служба - есть ли у него разрешение и видимость для целевого каталога?

Добавьте некоторую диагностику в класс, чтобы вы могли видеть, что она пытается сделать, и вывестиинформация об ошибках (вы обрабатываете любые возможные ошибки ОС в FileSystemWatcher, верно?).Они понадобятся вам в любом случае, когда сервис начнет работать.Сравните результаты при работе в качестве службы с тестом.

Добавьте System.Threading.Thread.Sleep(15000) в свой класс, чтобы при вызове вашим сервисом у вас было время подключить отладчик, чтобы выяснить, что происходит.

0 голосов
/ 22 сентября 2010

попытайтесь отладить ваш сервис, как сказал спонсор - запустить сервис. Поместите точку отладки на место в коде, чтобы проверить. Нажмите Ctrl + Alt + P в Visual Studio, чтобы отобразить экран процесса.

Регистрация - Показать процессы у всех пользователей И Показать процессы во всех сессиях - Флажок. Попробуйте найти свой сервис в - Список доступных процессов и нажимаем «Присоединить»

Теперь поместите файл в папку, и отладчик доставит вас к VS в точке останова и попытается отладить его. Я уверен, что вы найдете, в чем проблема.

...