告别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"
  • 开机自动启动
  • 尝试重启服务
相关推荐
实名上网宋凯宣9 小时前
Django
后端·python·django
利威尔xu10 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
逃逸线LOF11 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
慢云智慧空间11 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu11 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
薛定谔的猫-菜鸟程序员12 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
共享家952713 小时前
408 操作系统第一章
服务器·数据库·windows
IT_陈寒14 小时前
SpringBoot多环境配置把我坑惨了,这个踩坑经验你最好看看
前端·人工智能·后端
码事漫谈14 小时前
DeepSeek 搞了个 "Super-agent",但不是超级智能
后端
吴凡wudianmei14 小时前
从 0 搭一个 AI Agent(四):SSE 跑通之后,三处“契约错配”与它们的修复边界
前端·后端·aigc