在.net核心中编写Windows服务

Xam*_*Dev 5 c# windows-services .net-core asp.net-core

我的问题是如何在以前的.net版本中编写的.net核心中编写Windows服务?

很多链接/文章解释了如何将.net核心应用程序托管为Windows服务.那么这是我创建Windows服务的唯一方法吗?

如果是的话,任何人都可以提供它的链接/示例

谢谢 !

Sor*_*ren 8

这是在.net Core(控制台应用程序)中构建Windows服务的另一种简单方法

DotNetCore.WindowsService

简单的库,允许一个主机点网络核心应用程序作为Windows服务.

安装

使用nuget: Install-Package PeterKottas.DotNetCore.WindowsService

用法

  1. 创建.NETCore控制台应用程序.
  2. 创建您的第一个服务,如下所示:

    public class ExampleService : IMicroService
    {
        public void Start()
        {
            Console.WriteLine("I started");
        }
    
        public void Stop()
        {
            Console.WriteLine("I stopped");
        }
    }  
    
    Run Code Online (Sandbox Code Playgroud)
  3. Api服务:

    ServiceRunner<ExampleService>.Run(config =>
    {
        var name = config.GetDefaultName();
        config.Service(serviceConfig =>
        {
            serviceConfig.ServiceFactory((extraArguments) =>
        {
            return new ExampleService();
        });
        serviceConfig.OnStart((service, extraArguments) =>
        {
            Console.WriteLine("Service {0} started", name);
            service.Start();
        });
    
        serviceConfig.OnStop(service =>
        {
            Console.WriteLine("Service {0} stopped", name);
            service.Stop();
        });
    
        serviceConfig.OnError(e =>
        {
            Console.WriteLine("Service {0} errored with exception : {1}", name, e.Message);});
        });
    });
    
    Run Code Online (Sandbox Code Playgroud)
  4. 不带参数运行服务,它像控制台应用程序一样运行.

  5. 使用action:install运行服务,它将安装该服务.
  6. 运行带有操作的服务:卸载,它将卸载该服务.
  7. 使用action运行服务:start,它将启动服务.
  8. 使用操作运行服务:停止,它将停止服务.

  • [示例服务](https://github.com/SorenZ/DotNetConsoleService) 基于主存储库示例。我希望它会有所帮助;) (2认同)

小智 3

不确定是否有默认的方法可以做到这一点。但是,您可以让您的核心应用程序继承ServiceBase并实现必要的覆盖。我们在应用程序中执行此操作(请注意,我们的目标是完整框架,而不是核心)。最初的想法来自以下文章:

请注意,这些文章仍然引用DNX(来自 .NET Core 测试版) - 这些天您的核心应用程序将编译为 exe,因此您可以调整它们的示例来满足这一点。