TopShelf服务未执行

时间:2018-11-05 10:39:10

标签: c# topshelf

我正在尝试执行一个TopShelf服务。

目前,我只有一些测试代码来查看是否可以安装该服务。

到目前为止,我已经能够获得服务Start()并在调试模式下执行。
从那里我安装了服务,例如ConsoleApp.exe Install
< br />该服务将显示在Services中,但是当我启动该服务时,它什么也没做,例如,当我在桌面上创建txt文件时(使用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,但是文件文本文件未出现在桌面上。

0 个答案:

没有答案