告别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"
  • 开机自动启动
  • 尝试重启服务
相关推荐
子洋2 小时前
AI Agent 设计模式 - ReAct 模式
前端·人工智能·后端
晨非辰2 小时前
基于Win32 API控制台的贪吃蛇游戏:从设计到C语言实现详解
c语言·c++·人工智能·后端·python·深度学习·游戏
Victor3562 小时前
Netty(27)Netty的拦截器和过滤器是什么?如何使用它们?
后端
码界奇点2 小时前
基于Go语言的Web管理面板系统设计与实现
开发语言·后端·golang·毕业设计·web·go语言·源代码管理
WizLC2 小时前
【后端】关于Elasticsearch的入门,下载安装+使用
java·大数据·后端·elasticsearch·搜索引擎·全文检索
小此方2 小时前
Re: ゼロから学ぶ C++ 入門(六)类和对象·第三篇:运算符重载
开发语言·c++·后端
喵了几个咪2 小时前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:用 JavaScript/Lua 解锁动态业务扩展能力
javascript·后端·微服务·golang·lua·admin
浮尘笔记2 小时前
Go语言条件变量sync.Cond:线程间的协调者
开发语言·后端·golang