告别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"
  • 开机自动启动
  • 尝试重启服务
相关推荐
lizhongxuan1 天前
AI Agent 的一体化沙盒环境
后端
祈安_1 天前
C语言内存函数
c语言·后端
用户5433081441941 天前
Manifest V3 实战:从补天网站逆向到 Chrome 扩展开发全记录
前端·后端
是你的小恐龙啊1 天前
基于 Rust 与大语言模型构建下一代运维配置生成器:深度技术实践
后端
Undoom1 天前
基于 Go 语言与 DeepSeek-V3 构建企业级自动化代码审计系统深度解析
后端
是你的小恐龙啊1 天前
破局海量日志噪音:基于 Rust + DeepSeek 实现微服务级联故障的精准定位与自动化修复
后端
回家路上绕了弯1 天前
深入解析Claude Skill:原理、特性与实战应用全指南
后端·agent
华仔啊1 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
JaguarJack1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端