2012-12-21 42 views
26

Utworzono usługę systemu Windows i zainstalowałem ją na serwerze. Wygląda na to, że działa dobrze, tzn. Robi to, co ma zrobić. Ale kiedy loguję się do serwera przez zdalny pulpit, pojawia się następujący komunikat:Nie można uruchomić usługi z wiersza poleceń lub debugera

Nie można uruchomić usługi z wiersza poleceń lub debuggera. Usługa Windows musi najpierw zostać zainstalowana (za pomocą installutil.exe), a następnie uruchomiona przy użyciu narzędzia ServerExplorer, narzędzia administrowania usługami Windows lub polecenia NET START.

Klikam na, a następnie przechodzę do eksploratora usług, aby sprawdzić usługę, i wszystko zaczęło się dobrze. Nie zgłoszono błędów.

Zainstalowałem to, aby używać systemu lokalnego jako "Zaloguj się jako".

Dzięki.

+0

jesteś pewien, że dokładnie to komunikat o błędzie rzut usługa? –

+0

Wiadomość pojawiła się dopiero po zainstalowaniu moich okien, a usługa odczytuje pliki XML i musi działać nieprzerwanie. Spojrzę na to po Bożym Narodzeniu, bo właśnie wróciłem do pracy. Wydaje się dziwne, że występuje od momentu zainstalowania mojej usługi. Ale jak już powiedziałem, działa, ale po prostu nie chce, aby ten komunikat pojawił się, gdy użytkownicy logują się za pomocą zdalnego pulpitu – Boomerang

+0

możliwy duplikat błędu [Windows Service start failure] (http://stackoverflow.com/questions/5157176/windows-service-start- awaria) –

Odpowiedz

37

zmienić metodę w Program klasy Main następująco:

/// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    private static void Main() 
    { 
     var myService = new MyService(); 
     if (Environment.UserInteractive) 
     { 
      Console.WriteLine("Starting service..."); 
      myService.Start(); 
      Console.WriteLine("Service is running."); 
      Console.WriteLine("Press any key to stop..."); 
      Console.ReadKey(true); 
      Console.WriteLine("Stopping service..."); 
      myService.Stop(); 
      Console.WriteLine("Service stopped."); 
     } 
     else 
     { 
      var servicesToRun = new ServiceBase[] { myService }; 
      ServiceBase.Run(servicesToRun); 
     } 
    } 

Trzeba dodać metodę Start do klasy usług:

public void Start() 
    { 
     OnStart(new string[0]); 
    } 

zmienić typ pliku wyjściowego projektu do „Console Aplikacja "zamiast" Aplikacja systemu Windows "na karcie" Aplikacja "we właściwościach projektu. Teraz możesz po prostu nacisnąć klawisz F5, aby rozpocząć debugowanie, ale nadal możesz uruchomić plik wykonywalny jako usługę systemu Windows.

+0

@Tadej odbudowałeś? – MattCom

+0

@MattCom znalazłem inny sposób na zrobienie tego. Ale nie pamiętam dokładnie, co było. – JedatKinports

-4

Naciśnij CTRL-ALT-CANC (*) i przejdź do zakładki Usługi. Istnieje lista usług, wyszukaj tę, którą chcesz uruchomić, wybierz ją i kliknij "start". Jeśli go tam nie ma, być może został odinstalowany, nie (poprawnie?) Zainstalowany, lub z jakiegoś innego powodu usługa nie jest znana w systemie Windows.

(*) lub CTRL-ALT-DEL (ete) lub inne, w zależności od języka klawiatury.

+0

CANC? Czy to jest Delete? – Moira

+0

Dzięki, dodałem (*) z wyjaśnieniem. Nie sądziłem, że to zależy od klawiatury. – fresko

-4

Goto App.config

Znajdź

<setting name="RunAsWindowsService" serializeAs="String"> 
<value>True</value> 

ustawiona na false

Powiązane problemy