关于将ASP.NET Core项目发布为Windows服务的疑问及项目关系咨询
Worker Service与ASP.NET Core项目的关系及Web项目转Windows服务步骤
一、Worker Service和ASP.NET Core项目的关系
Worker Service是ASP.NET Core生态下的后台任务项目模板,它和ASP.NET Core Web项目(比如MVC、Web API)共享同一个通用主机(Generic Host)体系:
- Web项目专注处理HTTP请求,自带Kestrel服务器配置;
- Worker Service专注后台持续任务(比如定时任务、消息监听),默认没有HTTP服务;
- 两者都基于.NET Core的主机系统,所以文档里的配置代码(比如
UseWindowsService())是通用的,不管是Worker还是Web项目都能使用。
文档里提到Worker Service,是因为它默认就集成了Windows服务的基础配置,但这不代表只有Worker Service才能转成Windows服务——ASP.NET Core Web项目只需要添加少量配置就能实现同样的效果。
二、将ASP.NET Core项目发布为Windows服务的步骤
1. 添加Windows服务依赖包
在项目中安装NuGet包Microsoft.Extensions.Hosting.WindowsServices,这个包提供了Windows服务的扩展方法。
2. 配置项目主机
在Program.cs里,给主机添加Windows服务支持。以.NET 6+的顶级语句为例:
var builder = WebApplication.CreateBuilder(args); // 保留你原有的服务配置,比如AddControllers()、AddDbContext()等 builder.Services.AddControllers(); // 启用Windows服务支持,可自定义服务名称 builder.Host.UseWindowsService(options => { options.ServiceName = "MyAspNetCoreWebService"; }); var app = builder.Build(); // 保留你原有的中间件配置,比如UseRouting()、UseAuthorization()等 app.UseRouting(); app.UseAuthorization(); app.MapControllers(); app.Run();
3. 发布项目
- 在Visual Studio中右键项目,选择「发布」;
- 选择「文件夹」作为发布目标,设置发布路径;
- 在「发布配置文件设置」中,将「目标运行时」设为
win-x64(或对应你的Windows架构),按需勾选「生成单个文件」; - 点击「发布」,等待编译完成。
4. 安装并启动Windows服务
打开管理员权限的命令提示符或PowerShell:
- 安装服务:
注意:sc create MyAspNetCoreWebService binPath= "C:\发布路径\你的项目.exe"binPath=后面的等号和路径之间必须有空格。 - 启动服务:
sc start MyAspNetCoreWebService - 后续管理:可以通过服务管理器(services.msc)查看、停止或重启服务。
内容的提问来源于stack exchange,提问作者sea-wave
相关产品推荐
相关产品推荐

