.Net Core以windows服务方式部署

关于“.Net Core以Windows服务方式部署”的完整攻略,下面是详细的步骤:

1. 创建.NET Core控制台应用程序

首先需要创建一个.NET Core控制台应用程序,这可以通过在终端中使用“dotnet new console”命令完成,这将创建一个最简单的.NET Core应用程序。

2. 添加Microsoft.Extensions.Hosting和Topshelf NuGet包

Windows服务需要一个宿主来运行,我们可以使用Microsoft.Extensions.Hosting包来创建宿主。Topshelf是一个用于.NET框架的服务托管器,通过使用这两个包可以实现将.NET Core应用程序托管为Windows服务的目的。

可以使用以下命令来添加这两个NuGet包:

dotnet add package Microsoft.Extensions.Hosting
dotnet add package Topshelf

3. 实现服务逻辑

在控制台应用程序中实现服务的逻辑。这个逻辑可以是一个无限循环,或者是一个特定条件下结束的操作。示例如下:

using System.Threading;
using Microsoft.Extensions.Hosting;

namespace TestWindowsService
{
    internal class MyService : IHostedService
    {
        private readonly CancellationTokenSource _cts = new CancellationTokenSource();

        public async Task StartAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("MyService is starting.");

            while (!_cts.IsCancellationRequested)
            {
                Console.WriteLine("MyService is running...");
                await Task.Delay(TimeSpan.FromSeconds(5), cancellationToken);
            }
        }

        public async Task StopAsync(CancellationToken cancellationToken)
        {
            Console.WriteLine("MyService is stopping.");
            _cts.Cancel();
            await Task.CompletedTask;
        }
    }
}

4. 创建服务实例

在Main函数中创建服务实例,这个实例将被Topshelf用于托管.NET Core应用程序。示例如下:

using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Topshelf;

namespace TestWindowsService
{
    internal static class Program
    {
        internal static void Main()
        {
            var serviceProvider = new ServiceCollection()
                .AddSingleton<MyService>()
                .BuildServiceProvider();

            HostFactory.Run(config =>
            {
                config.Service<MyService>(service =>
                {
                    service.ConstructUsing(svc => serviceProvider.GetService<MyService>());
                    service.WhenStarted(svc => svc.StartAsync(default).Wait());
                    service.WhenStopped(svc => svc.StopAsync(default).Wait());
                });

                config.UseConsoleLogger();
                config.RunAsLocalSystem();
                config.StartAutomatically();
                config.EnableServiceRecovery(conf =>
                {
                    conf.RestartService(1);
                });

                config.SetServiceName("MyService");
                config.SetDisplayName("MyService");
                config.SetDescription("My Test Windows Service");
            });
        }
    }
}

示例1:安装Windows服务

使用Visual Studio命令提示符或PowerShell,以管理员身份运行以下命令以安装窗口服务:

.\TestWindowsService.exe install

然后使用以下命令启动服务:

.\TestWindowsService.exe start

示例2:使用Topshelf的控制台可交互模式

使用Visual Studio命令提示符或PowerShell,以管理员身份运行以下命令将服务运行为控制台可交互模式:

.\TestWindowsService.exe console

可以使用“Ctrl + C”停止控制台应用程序和Windows服务。

至此,我们已经完成了.NET Core以Windows服务方式部署的完整攻略和示例,希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.Net Core以windows服务方式部署 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#的Process类调用第三方插件实现PDF文件转SWF文件

    那么关于“C#的Process类调用第三方插件实现PDF文件转SWF文件”,可以按照以下步骤来实现: 步骤一:选用PDF转SWF工具 在网上可以找到多种PDF转SWF的工具,选择一个稳定、常用的工具比较可靠。这里举例使用 SWFTools。 步骤二:安装SWFTools 下载并安装SWFTools,并确保其bin目录添加到了系统的环境变量之中,使其能够在任何…

    C# 2023年5月15日
    00
  • Android实现横屏切换科学计算器

    Android实现横屏切换科学计算器攻略 介绍 在Android应用中实现横屏切换,能够提升用户体验,特别是在进行科学计算的时候。在横屏模式下,可以修改应用的布局,增加更多的控件和功能。本文将详细讲解如何实现在Android应用中实现横屏切换的科学计算器。 实现步骤 首先需要定义两种不同的布局文件,一种布局用于竖屏模式,另一种用于横屏模式。命名方式应该为: …

    C# 2023年6月7日
    00
  • 怎么利用c#修改services的Startup type

    要利用C#修改Windows服务的启动类型(Startup type),可以使用.NET Framework下的ServiceController和ServiceType类。步骤如下: 步骤一:添加引用 在项目中添加System.ServiceProcess引用。 步骤二:获取服务 使用ServiceController类获取要修改的服务,可以用服务名称或服…

    C# 2023年6月6日
    00
  • ASP.NET Core MVC 从入门到精通之wwwroot和客户端库

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启…

    C# 2023年4月25日
    00
  • c#实现汉诺塔问题示例

    C#实现汉诺塔问题示例 汉诺塔问题是经典的数学问题之一,其规则如下: 有三根针,上面从上到下按小到大顺序套着圆盘,现在要把圆盘从其中一个针移到另一个针上。每次只能移动一个圆盘,且大的圆盘不能放在小的圆盘之上。问如何操作。 解题思路 汉诺塔问题和递归算法有着紧密联系,因此我们可以利用递归算法来解决汉诺塔问题。 设有a、b、c三个针,将n个盘子从a针移到b针: …

    C# 2023年6月6日
    00
  • c#代码自动修改解决方案下任意文件实例

    以下是关于“C#代码自动修改解决方案下任意文件实例”的完整攻略: 问题描述 在C#应用程序项目中,有时候需要批量修改项目中的一些文件,然而手动修改很容易出错,浪费时间。这个问题可以通过编写代码实现自动修改来解决。 解决方案 下面是具体步骤: 首先,在 Visual Studio 中创建一个控制台应用程序项目; 在项目中添加需要批量修改的文件,可以是代码文件、…

    C# 2023年6月7日
    00
  • .NET使用Collections.Pooled提升性能优化的方法

    .NET使用Collections.Pooled提升性能优化的方法 简述 在进行 .NET 开发过程中,尤其在一些高并发、大量数据操作的场景下,很容易出现内存泄漏和性能问题。而使用 C# 中的 Collections.Pooled 可以有效地缓解此类问题,从而提高程序的性能。本文将详细介绍 Collections.Pooled 的使用方法及优化效果。 Col…

    C# 2023年6月3日
    00
  • asp.net core 使用 TestServer 来做集成测试的方法

    ASP.NET Core使用TestServer进行集成测试 在ASP.NET Core应用程序中,我们可以使用TestServer来进行集成测试。TestServer是一个轻量级的Web服务器,它可以在内存中运行ASP.NET Core应用程序,并提供HTTP请求和响应的模拟。在本文中,我们将介绍如何使用TestServer进行集成测试,并提供一些示例来说…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部