Решенную проблему смотрите в нижней части моего поста.
Итак, у меня есть простая служба Windows, которая просматривает определенную папку и выгружает файлы, которые поступают в нее, на сервер с помощью веб-службы.
Он отлично работает на моей машине с Windows 7, но когда я пытаюсь запустить его на Windows Server 2003, я получаю сообщение об ошибке: Ошибка 1053: служба не отвечает на запрос запуска или управления своевременно. Но я получаю это сообщение через несколько секунд.
Я создал ServicesPipeTimeout и установил его на 60000 миллисекунд.
Я попытался запустить его из командной строки с помощью команды sc query и обнаружил, что WIN32_EXIT_CODE равен 0, что, я думаю, означает, что служба даже не пытается запустить, потому что она находит ошибку перед запуском.
В программе просмотра событий я получаю ошибки 7000 и 7009.
Я администратор на сервере Windows.
Единственное, что я не пробовал, это исправление, которое я нашел в Microsoft, но я не хочу его использовать, потому что, насколько я понимаю, это происходит, когда служба фактически перестает работать. http://support.microsoft.com/kb/886695
Я перепробовал все, что мог придумать, есть ли что-то, чего мне не хватает?
Гисли
РЕДАКТИРОВАТЬ: переустановить .NET Framework, и теперь я получаю новую ошибку, сказав, что контроллер службы не может быть найден.
РЕДАКТИРОВАТЬ: я настраиваю службу с проектом установки, не используя команду installutil. Это потому, что мне нужно получить пользовательский ввод во время установки и сохранить его в реестре.
РЕДАКТИРОВАТЬ: Я установил .NET 4.0 Framework, не удалось установить службу без этого.
В дополнение к тому, что я написал выше, я также попробовал:
Rebooting.
Повторная установка.
Я попытался изменить права доступа к файлам, доступ к которым необходим службе.
Изменение разрешений в редакторе реестра.
Отредактировал код так, чтобы функция onStart запускала только один поток.
Я думаю, что это какая-то проблема с разрешениями, но у меня нет большого опыта работы с сервером Windows.
Решение:
Оказалось две отдельные проблемы. Необходимо было исправить фреймворк .NET, и мне пришлось удалить предложение try / catch, которое было у меня при запуске сервиса. По какой-то причине (неизвестно мне) блок try catch сделал что-то, что сделало невозможным запуск службы в Windows Server 2003, но он нормально работал в Windows 7.
Было бы очень интересно узнать, почему это так.
Спасибо за помощь.
Gísli