Служба TopShelf не выполняется - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь запустить службу TopShelf .

На данный момент у меня есть только несколько тестовых кодов, чтобы посмотреть, смогу ли я установить службу для установки.

До сих пор я был в состоянии получить службы Start() и выполнить их в режиме отладки.
Оттуда я устанавливаю службу, например, ConsoleApp.exe Install.

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

Вот что у меня так далеко.

Сначала я создаю Service Class

class FooService
{
    public void Start()
    {
        string DESKTOP = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        string Foo = "foo.txt";
        string fullPath = System.IO.Path.Combine(DESKTOP, Foo);
        using (System.IO.StreamWriter sw = new StreamWriter(fullPath))
        {
            sw.WriteLine("Hello World");
        }
    }
    public void Stop()
    {
        Console.WriteLine("Service Stopped");
    }
}

Как видите, я просто создаю txt-файл на рабочем столе (который работает в VS).

Оттуда я настраиваю службу.

internal static class ConfigureService
{
    internal static void Config(string serviceName, string serviceDescription)
    {
        if (string.IsNullOrEmpty(serviceName) | string.IsNullOrEmpty(serviceDescription))
        {
            return;
        }

        HostFactory.Run(Config =>
        {
            Config.Service<FooService>(service =>
            {
                service.ConstructUsing(s => new FooService());
                service.WhenStarted(s => s.Start()); // start event.
                service.WhenStopped(s => s.Stop()); // stop event.  
            });

            // Create Event.
            Config.RunAsLocalSystem(); // user.
            Config.SetServiceName(serviceName); // service name.
            Config.SetDescription(serviceDescription); // service description.
        });
    }
}

И, наконец, я выполняю это со следующим:

// Entry Point.
static void Main()
{
    ConfigureService.Config("Foo Service", "some discription....Idk");
    Console.ReadLine();
}

При запуске службы она говорит Running, однако текстовый файл не отображается на рабочем столе.

...