2010-09-15 3 views
12

Мой автоматически запускающийся сервис Windows не запускается только при перезагрузке. У меня есть служба Windows, созданная на C# и установленная через установщик Wix. Служба настроена для автоматического запуска. Служба устанавливается и запускается в службе NT AUTHORITY \ NETWORK SERVICE. Когда служба запускается, она сначала вызывает вызов внешних веб-сервисов.Служба Windows не запускается автоматически после перезагрузки

В Windows 7 я могу настроить автоматическую службу - запуск с задержкой и запуск службы при перезагрузке без проблем. Тем не менее, эта опция не доступна в Windows XP, и при установке в автоматическом запуске, служба не из-за

A timeout was reached (30000 milliseconds) while waiting for the MyService service to connect.

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

Может ли кто-нибудь указать мне на правильные зависимости или альтернативный подход?

ответ

11

Вероятно, у вас есть состояние гонки с зависимостью. Возможно, вы воспользуетесь этой настройкой, настроив свою службу на зависимость от другой службы (скажем, tcp/ip), но то, что я действительно сделал, - это перезаписать свою услугу, чтобы не требовать этого вызова во время критического пути запуска запуска. Вместо этого следует периодически пытаться сделать вызов webservice в более поздней точке и записывать полезные сообщения или отправлять сообщения утилите панели задач или тому подобное, если есть проблема, которая должна быть устранена.

+0

Я думал об этом. Проблема заключается в том, что вызов выполняется для получения удаленных настроек конфигурации и как таковой встроен в настройки в качестве расширения SettingsProvider. –

+1

Извините, но это нужно сделать. Основной дизайн в лучшем случае хрупкий. Веб не имеет гражданства и полагает, что это что-то еще не так. –

+1

Я принял ваш совет и сделал мой метод OnStart(), выполнив минимальную функциональность и запустив таймер, который позже выполнит настройку конфигурации и инициализирует функциональные возможности службы. –

0

У меня была такая же проблема на 4 новых серверах. Я установил службу W32 для автоматической задержки и решил проблему.