.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日

相关文章

  • unity 如何获取Text组件里text内容的长度

    获取Text组件中包含的文本内容长度是通过Unity中提供的string.Length属性实现的。下面是获取Text组件中文本内容长度的完整攻略: 步骤一:获取Text组件对象 使用GameObject.GetComponent()函数获取文本对象的Text组件。例如: Text textComponent = GetComponent<Text&gt…

    C# 2023年6月3日
    00
  • .NET Core中的HttpClientFactory类用法详解

    HttpClientFactory是.NET Core中的一个新特性,它提供了一种更好的方式来管理和使用HttpClient实例。在本攻略中,我们将详细讲解HttpClientFactory的用法,并提供两个示例来说明它的使用。 什么是HttpClientFactory? HttpClientFactory是.NET Core 2.1中引入的一个新特性,它提…

    C# 2023年5月16日
    00
  • C#学习基础概念二十五问

    C#学习基础概念二十五问是一份用于初学者入门的C#教程,以下是详细的攻略: 目录结构 C#学习基础概念二十五问包含了C#的基础语法、面向对象编程、泛型、委托等知识点,其目录结构如下: 第1问 初学者如何在Windows上编写C#代码 第2问 什么是C#? 第3问 C#的基础语法之变量类型 第4问 C#的基础语法之运算符 第5问 C#的基础语法之流程控制语句 …

    C# 2023年6月1日
    00
  • ajax+php控制所有后台函数调用

    下面是关于“ajax+php控制所有后台函数调用”的完整攻略,包含两个示例。 1. 什么是Ajax Ajax(Asynchronous JavaScript and XML)是一种用于创建动态Web应用程序的技术。它使用JavaScript和XML(或JSON)来实现异步数据交换,从而避免了页面的重新加载。Ajax可以使Web应用程序更加快速、灵活和交互性。…

    C# 2023年5月15日
    00
  • C#中FormsAuthentication用法实例

    下面是关于“C#中FormsAuthentication用法实例”的完整攻略。 一、什么是FormsAuthentication FormsAuthentication 是 ASP.NET 提供的一种 Forms 身份验证机制,它使用基于 Cookie 的认证方式来验证用户身份。 在使用 FormsAuthentication 时我们需要进行以下几步: 创建…

    C# 2023年6月1日
    00
  • II7添加应用程序测试时 无法验证对路径(c:\test\WcfService)的访问

    当在IIS 7上添加应用程序时,有时会遇到“无法验证对路径(c:\test\WcfService)的访问”的错误。这通常是由于IIS用户没有足够的权限来访问该路径。下面是解决此问题的完整攻略,包含两个示例。 1. 确认应用程序池的身份验证 首先,我们需要确认应用程序池的身份验证设置是否正确。在IIS管理器中,选择应用程序池,右键单击并选择“高级设置”。在“进…

    C# 2023年5月15日
    00
  • C#中的委托和事件详解

    C#中的委托和事件详解 什么是委托? 在C#中,委托(Delegate)是一种特殊的类型,它允许我们将方法作为参数传递给另一个方法,或者把方法存储到一个变量中以便稍后再次使用。简单来说,委托就是一种方法的代理。我们可以使用委托实现一些类似于回调函数的功能。 定义一个委托类型的语法如下: delegate void MyDelegate(string mess…

    C# 2023年5月31日
    00
  • Jquery+asp.net后台数据传到前台js进行解析的方法

    在ASP.NET中,可以使用JQuery将后台数据传递到前台JavaScript进行解析。本文将提供详解如何使用JQuery+ASP.NET后台数据传到前台JavaScript进行解析的完整攻略,包括在ASP.NET中使用JQuery、在后台代码中获取数据、在前台JavaScript中解析数据等。同时,本文还提供两个示例,演示如何使用JQuery+ASP.N…

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