-
轻松打造Windows服务:将.NET Core项目转化为无缝运行的后台服务
概述:本教程教您如何将.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停止服务。
这是一个简单的例子,具体的细节可能因项目的复杂性而有所不同。根据实际需要调整代码和配置。
出处:https://www.cnblogs.com/hanbing81868164/p/17995752
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式