告别IIS依赖!ASP.NET Core如何通过Windows Service实现服务托管

文章目录

背景

IIS默认会定时回收进程,这会严重影响后台应用的定时任务,接收消息队列等需要不间断运行的功能。

步骤

添加Nuget

添加Microsoft.Extensions.Hosting.WindowsServices

powershell 复制代码
NuGet\Install-Package Microsoft.Extensions.Hosting.WindowsServices

修改builder

在Program.cs里修改builder创建方式,将应用路径设为项目启动路径

csharp 复制代码
var builder = WebApplication.CreateBuilder(new WebApplicationOptions
{
    ContentRootPath = AppContext.BaseDirectory, // 强制绑定到发布目录
    Args = args
});

添加Windows Service

csharp 复制代码
builder.Services.AddWindowsService(options =>
{
    options.ServiceName = "ASP.Net 10 Serivce";
});

发布

发布选择目标运行时为 win-x64

bash 复制代码
dotnet publish -c Release -r win-x64 --self-contained false -o ./publish

添加到Services

通过启动参数指定启动端口

bash 复制代码
sc create "MyASPNetCoreService" binPath= "C:\MyApp\MyAspNetCoreApp.exe --urls=http://0.0.0.0:5001" start=delayed-auto
  • 删除服务
bash 复制代码
sc delete "MyASPNetCoreService"
  • 开机自动启动
  • 尝试重启服务
相关推荐
梦@_@境6 小时前
面向 Spring Boot 的可观测业务流程编排引擎
java·spring boot·后端
JAVA面经实录9177 小时前
Netty 全套系统化学习文档(零基础到高阶面试完整版)
java·后端
GetcharZp7 小时前
C++ 程序员的终极减负:仅需一个头文件,优雅搞定 HTTP 客户端与服务端
后端
IT_陈寒7 小时前
Python的pickle让我半夜加班,这破玩意儿太坑了
前端·人工智能·后端
仙俊红7 小时前
SpringBoot启动原理
java·spring boot·后端
星间都市山脉7 小时前
Android STS(Security Test Suite)完整介绍与测试流程
android·java·linux·windows·ubuntu·android studio·androidx
地铁潜行者8 小时前
加了幂等表,为什么消息重试反而不执行了?聊聊 MQ 消费幂等的边界
java·后端
地铁潜行者8 小时前
Kafka 只发了一条消息,为什么业务侧消费了两次?
后端
文心快码BaiduComate8 小时前
提升组织级AI Coding质量:电商搜索项目实践
前端·后端·程序员
用户8356290780518 小时前
Python 操作 Word 修订跟踪(Track Changes)
后端·python