2010-09-15 14 views
12

Moja automatycznie uruchamiana usługa Windows nie uruchamia się tylko po ponownym uruchomieniu komputera. Mam usługę Windows utworzoną w języku C# i instalowaną za pomocą instalatora utworzonego przez Wix. Usługa jest skonfigurowana do automatycznego uruchamiania. Usługa jest instalowana i uruchamiana w ramach usługi NT AUTHORITY \ NETWORK SERVICE. Gdy usługa jest uruchomiona, najpierw wykonuje zewnętrzne wywołanie usług WWW.Usługa systemu Windows nie uruchomi się automatycznie po ponownym uruchomieniu komputera

W Windows 7 mogę ustawić usługę jako Automatyczną - Opóźniony start, a usługa uruchomi się po ponownym uruchomieniu bez problemu. Jednak opcja ta nie jest dostępna w systemie Windows XP, a przy ustawieniu Automatyczny start, usługa nie działa z powodu

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

Gdy próbuję uruchomić ręcznie po zakończeniu procesu logowania, usługa zostanie uruchomiona w porządku, to jest tylko wtedy, gdy usługa próbuje automatycznie uruchomić po ponownym uruchomieniu komputera, że ​​istnieje problem, co prowadzi mnie do przekonania, że ​​istnieją usługi zależności, które muszę dodać do mojej usługi, aby rozpocząć poprawnie.

Czy ktoś może wskazać mi właściwe zależności lub alternatywne podejście?

Odpowiedz

11

Prawdopodobnie masz stan wyścigowy z zależnością. Prawdopodobnie mógłbyś to naprawić, konfigurując swoją usługę tak, aby miała zależność od innej usługi (np. Tcp/ip), ale to, co naprawdę zrobiłbym, to przepisanie usługi, aby nie było potrzeby wykonywania tego połączenia podczas krytycznej ścieżki uruchamiania. Zamiast tego należy okresowo próbować wywołać wywołanie usługi internetowej w późniejszym czasie i rejestrować przydatne komunikaty lub wysyłać komunikaty do narzędzia paska zadań lub podobnego, jeśli wystąpi problem wymagający rozwiązania.

+0

Myślałem o zrobieniu obu. Problem polega na tym, że wywołanie polega na pobieraniu zdalnych ustawień konfiguracyjnych i jako takie jest wbudowane w Ustawienia jako rozszerzenie UstawieńProvider. –

+1

Przepraszamy, ale trzeba to zrobić. Podstawowy projekt jest w najlepszym wypadku kruchy. Sieć jest bezpaństwowcem i zakłada, że ​​to wszystko jest złe. –

+1

Posłużyłem twoją radą i uczyniłem moją metodę OnStart(), wykonując minimalną minimalną funkcjonalność i uruchom Timer, który jest wykonywany później, aby usunąć ustawienia konfiguracyjne i zainicjować funkcjonalność usługi. –

0

Miałem ten sam problem na 4 nowych serwerach. Ustawiłem usługę W32, aby opóźniało automatyczne i rozwiązało problem.

Powiązane problemy