windows - Arbejder med TopShelf, jeg kører i en fejl omkring 'Topshelf.HostConfigurators.WindowsServiceDescription service er endnu ikke installeret.'

Indlæg af Hanne Mølgaard Plasc

Problem



Har nogen haft erfaring med TopShelf, når de bygger Windows Services?


Jeg fortsætter med at løbe ind i denne fejl, når jeg forsøger at starte tjenesten,


'Topshelf.HostConfigurators.WindowsServiceDescription service er endnu ikke installeret.'


Bygningen, installationsprogrammet, installationen og alle disse trin er afsluttet, og tjenesten vises i servicelisten i Windows Server, men når jeg klikker på tjenesten og forsøger at starte den, slettes denne undtagelse. Den fulde fejlmeddelelse vises nedenfor.


INFO 10:23:08 Opstart som vintjeneste
FATAL 10:23:08 Topshelf.HostConfigurators.WindowsServiceDescription service er endnu ikke blevet installeret. Kør venligst 'RIS.ModelGenerator.Scheduler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null installere'.
FEJL 10:23:08 Tjenesten forladt unormalt med en undtagelse
Topshelf.Exceptions.ConfigurationException: The Topshelf.HostConfigurators.WindowsServiceDescription service er endnu ikke blevet installeret. Kør venligst 'RIS.ModelGenerator.Scheduler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null installere'.
   på Topshelf.Windows.WindowsServiceHost.Run () i d: \ BuildAgent-01 \ work \ 799c08e77fef999d \ src \ Topshelf \ OS \ Windows \ WindowsServiceHost.cs: linje 56
   på Topshelf.HostFactory.Run (Action`1 configure) i d: \ BuildAgent-01 \ work \ 799c08e77fef999d \ src \ Topshelf \ Config \ HostFactory.cs: linje 45

Bedste reference


Problemet er højst sandsynligt, at du har mellemrum i dit servicenavn. Af en hvilken som helst grund søger Topshelf 2.2.2.0 korrekt efter tjenester med et mellemrum i navnet, selvom tjenesten kan installeres med et mellemrum, dvs. 'Min Service'. Når TopShelf søger efter tjenesten for at kontrollere, om den er installeret, vil den kun søge efter 'My'.


Her er et uddrag, du kan bruge til at se de tjenester, der er installeret på din boks:


using System;
using System.Linq;

public class Foo
{
    public static void Main()
    {
        foreach(var x in System.ServiceProcess.ServiceController.GetServices().OrderBy(x => x.ServiceName))
        {
            Console.WriteLine("Service Name: '{0}';, Display Name: '{1}'", x.ServiceName, x.DisplayName);
        }

        Console.ReadKey();
    }
}

Andre referencer 1


Det ser ud til, at jeg havde en version, der bare ikke virker (som synes at være den nyeste version). Jeg måtte rulle tilbage (via NuGet takknemligt) til en tidligere version, før v2.0 for at løse mit problem . Det viste sig også, at projektet jeg arbejdede på var hooked i nogle pre v2.0 funktioner/metoder, og dermed det efterfølgende problem.


Tak til Jeff Schumacher for den ekstra hjælp til dette problem. Forhåbentlig TopShelf-softwaren opdateres for ikke at have disse forskelle i de nuværende versioner.