Я пытаюсь запустить службу 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
, однако текстовый файл не отображается на рабочем столе.