首页 > 系统相关 >轻松打造Windows服务:将.NET Core项目转化为无缝运行的后台服务

轻松打造Windows服务:将.NET Core项目转化为无缝运行的后台服务

时间:2024-01-30 09:23:26浏览次数:28  
标签:Core 服务 Windows Extensions using NET Microsoft

 

概述:本教程教您如何将.NET Core项目打造成Windows服务,实现无需用户登录的后台运行。通过简单步骤,您可以快速部署并管理服务,确保应用持续高效运行。

将.NET项目制作成Windows服务可以让你的应用在后台持续运行,无需用户登录。以下是将.NET Core项目制作成Windows服务的步骤:

步骤:

1. 创建.NET Core 项目

首先,确保你的项目是一个.NET Core 项目。你可以通过使用以下命令创建:

dotnet new console -n YourServiceName

2. 安装 Microsoft.Extensions.Hosting.WindowsServices 包

使用以下命令安装必要的NuGet包:

dotnet add package Microsoft.Extensions.Hosting.WindowsServices

3. 修改 Program.cs

修改Program.cs以启用Windows服务支持:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseWindowsService()  // 启用Windows服务支持
            .ConfigureServices((hostContext, services) =>
            {
                services.AddHostedService<Worker>();
            });
}

4. 创建 Hosted Service 类

在项目中创建一个继承BackgroundService的类,例如:

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

public class Worker : BackgroundService
{
    private readonly ILogger<Worker> _logger;

    public Worker(ILogger<Worker> logger)
    {
        _logger = logger;
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
            await Task.Delay(1000, stoppingToken);
        }
    }
}

部署 Windows 服务:

1. 构建项目

在项目目录执行以下命令:

dotnet publish -c Release -r win10-x64

2. 安装服务

在发布目录中找到生成的可执行文件,打开命令提示符(以管理员身份运行):

sc create YourServiceName binPath= "C:\Path\To\Your\Service\YourServiceName.exe"

3. 启动服务

sc start YourServiceName

注意:

  • 确保你的服务在日志中有足够的信息,以便排查问题。
  • 使用sc命令可以方便地查看和管理服务,例如使用sc stop YourServiceName停止服务。

这是一个简单的例子,具体的细节可能因项目的复杂性而有所不同。根据实际需要调整代码和配置。

 

标签:Core,服务,Windows,Extensions,using,NET,Microsoft
From: https://www.cnblogs.com/hanbing81868164/p/17995752

相关文章

  • ControlNet学习实战1--字体海报
    最近玩AI绘画的过程中,突然发现了一个可以生成特点字体海报的技巧,特此记录学习一下。本片文章介绍大家制作一张2024龙年海报。ControlNet介绍ControlNet是一个应用于Stable_diffusion一个插件,该插件可以让AI更加精准的生成准确的想要的图片,关于这些内容后期会专门更加细致的说明......
  • 小项目:使用MQTT上传温湿度到Onenet服务器
    前言我们之前分别编写了DHT11、ESP8266和MQTT的代码,现在我们将它们仨整合在一起,来做一个温湿度检测小项目。这个项目可以实时地将DHT11传感器获取到的温湿度数据上传到OneNET平台。通过登录OneNET,我们随时随地可以查看温湿度数据。这种环境监测项目的应用场景有很多,其中......
  • 使用EtherNET转Profinet网关在博图配置PROFINET从站
    使用EtherNET转Profinet网关在博图配置Profinet从站XD-EPPN20是兴达易控推出具有Profinet从站功能EtherNET转Profinet网关。EtherNET转Profinet网关主要功能是将Profinet网络和ETHERNET/IP网络连接起来。EtherNET转Profinet网关连接到Profinet总线中做为从站使用,连接到ETHERNET/I......
  • 我的新书《ASP.NET Core+Vue.js全栈开发训练营》
    越来越多的工程师们选择使用ASP.NETCore7.0和Vue3来构建现代、高性能的Web应用程序,不仅因为这两种技术的流行和强大,更是因为它们可以相互配合,发挥出更大的优势。作者编写了本书,旨在为读者提供一个全面、实用的学习资源,以掌握使用ASP.NETCore7.0和Vue3构建功能丰富、高效的We......
  • kubeadm安装Kubernetes集群踩坑笔记
    目录背景步骤一安装DockerEngine步骤二:安装前配置步骤三:安装kubeadm步骤四:安装kubernetes的Master节点镜像准备开始安装安装Flannel网络插件步骤五:安装kubernetes的Worker节点总结思考背景最近在极客时间上跟Chrono大神学习Kubernetes基础,在实践过程中遇到一些运维、使用方面......
  • Adobe 2024 全家桶 Windows&Mac 官方直装版
    简化了安装流程适用于小白,无脑直接安装。Adobe公司开发了许多专业的图形设计、影像处理、视频编辑、网页设计等领域的软件。以下是Adobe系列中一些常见的软件:AdobePhotoshop-用于图像编辑和处理的专业软件。AdobeIllustrator-用于创建矢量图形和插图的矢量图形编辑软件。A......
  • UTF-8格式编码的文件分为带BOM和不带BOM windows下编程,Linux下编程建议使用“UTF-8无
    UTF-8格式编码的文件分为带BOM和不带BOMwindows下编程,Linux下编程建议使用“UTF-8无BOM格式,“建议使用”UTF-8带BOM格式“Notepad++支持“UTF-8无BOM格式”和“UTF-8带BOM格式”两种UTF-8。一直以来不知道二者有什么区别。程序员它们的区别是:UTF-8带BOM格式,就是在文件头添加......
  • Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--加载字体
    项目地址:Pdfium.Net:https://github.com/1000374/Pdfium.NetPdfiumViewer:https://github.com/1000374/PdfiumViewerPdfium.Net加载字体:1.加载ttf字体文件using(vardoc=PdfDocument.CreateNew()){varfontPath=@"c:\Windows\fonts\simhei.ttf";......
  • Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--添加文本
    项目地址:Pdfium.Net:https://github.com/1000374/Pdfium.NetPdfiumViewer:https://github.com/1000374/PdfiumViewerPdfium.Net添加文本有3个重载1.当前重载使用pdf标准字库添加文字(中文会乱码)///<summary>///AddtextobjectusingoneofthestandardPDFfont......
  • Pdfium.Net.Free 一个免费的Pdfium的 .net包装器--创建字符子集
    项目地址:Pdfium.Net:https://github.com/1000374/Pdfium.NetPdfiumViewer:https://github.com/1000374/PdfiumViewerPdfium.Net.Free一个免费的Pdfium的.net包装器--加载字体 接上篇,怎么创建字符子集呢?获取字符集内的字形符号需要引用wpf下PresentationCore.dll,根据比对传入......