.NET8 创建和部署windows服务图文教程
本文记录了如何使用Visual studio2022创建.NET8 windows服务,然后在服务器安装windows服务设置为自动启动的过程。
1、创建一个worker service项目
使用Visual studio2022创建一个新项目,选择辅助角色服务,如图所示:
设置项目名称,例如WorkerService。
选择.NET8框架,点击创建。
我创建了一个名为WorkerService的项目,创建完成后的目录结构如图所示:
2、安装Microsoft.Extensions.Hosting.WindowsServices
当前项目可在linux下运行,但是还不能以服务的方式在windows上安装运行。所以需要安装Microsoft.Extensions.Hosting.WindowsServices包。可以通过Nuget安装。如果是使用.NET8版本的话可以选择8.x.x版本的包安装。如下图所示,我安装了Microsoft.Extensions.Hosting.WindowsServices 8.0.0版本。
3、添加Windows服务并设置服务名称
在Program.cs文件中使用AddWindowsService方法并设置服务名称。它会显示在Windows服务列表中。安装Windows服务时可以自定义服务名称,这里只是设置一个默认名称。
using WorkerService;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddWindowsService(options => {
// 设置服务名称
options.ServiceName = "MyServiceName";
});
builder.Services.AddHostedService<Worker>();
var host = builder.Build();
host.Run();
4、修改Worker.cs,编写需要执行的代码
在Worker.cs中,可以在ExecuteAsync方法里编写需要执行的代码。也可以重写StartAsync,StopAsync方法添加需要在服务启动和结束时需要执行的代码。
namespace WorkerService
{
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)
{
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
}
await Task.Delay(1000, stoppingToken);
}
}
public override Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Worker starting at: {time}", DateTimeOffset.Now);
return base.StartAsync(cancellationToken);
}
public override Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Worker ending at: {time}", DateTimeOffset.Now);
return base.StopAsync(cancellationToken);
}
}
}
5、发布程序
编写代码完成后,可以发布程序。右键项目,选择发布,然后选择将程序发布到本地文件夹。默认发布到\workerservice\bin\release\net8.0\publish文件夹下。
6、安装Windows服务
通过sc create命令创建Windows服务。命令里也可以设置在服务列表里显示的服务名称。下面的命令展示了我创建了一个名为MyServiceName的Windows服务。
sc create MyServiceName binpath="D:\Service\WorkerService\WorkderService.exe"
CreateService 成功说明Windows服务创建成功了。
可以在服务列表里看到刚才创建的LeavescnWorkerService服务了。我们可以启动服务,也可以右键设置属性,把服务设置为自动启动。
可以通过sc delete <ServiceName>命令删除Windows服务。
更新于:7个月前
相关文章
- .NET C# 使用Hook钩子实现全局监听键盘和鼠标
- BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架
- .NET C#连接FTP实现文件上传下载
- .NET C#中的Func、Predicate和Expression用法详解
- 5个高性能 .NET Core 图片处理库推荐
- ASP.NET如何将Views文件夹从项目分离
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- 最新CentOS7安装搭建shadowsocks服务端+客户端使用图文教程
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?
- PluginCore 基于 ASP.NET Core 的轻量级插件框架