告别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"
  • 开机自动启动
  • 尝试重启服务
相关推荐
fatcoder19 分钟前
玩转Docker 06 — 容器网络
前端·后端·docker
feng尘28 分钟前
深入浅出 Java:ThreadLocal 为什么会产生内存泄漏?
后端
懒人wsh2 小时前
不上悲观锁也不上 Redis:一个 AI 平台的钱包并发是怎么搞的
后端
神奇小汤圆2 小时前
记一次线上翻车:加了Redisson分布式锁,数据还是被并发打穿了
后端
南雨北斗2 小时前
ThinkPHP6 设置响应 `Content-Type: application/json`
后端
用户3945071778242 小时前
Git 安装与 SSH 公钥配置教程
后端
政采云技术3 小时前
工单处理的智能革命:钉钉AI助理辅助系统探索
人工智能·后端·ai编程
Zane19944 小时前
钻石继承调用哪个方法?一文讲透 MRO 与 C3 线性化算法
后端·python