告别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"
  • 开机自动启动
  • 尝试重启服务
相关推荐
枫叶林FYL1 天前
项目八 云资源成本优化与治理平台
后端·python·自然语言处理·flask
java_logo1 天前
SiYuan 思源笔记 Docker 部署终极指南:Windows+Linux 双平台
windows·笔记·docker·思源笔记·思源笔记部署·docker部署思源笔记·思源笔记文档
SamDeepThinking1 天前
第1篇-开篇词:几亿用户规模下,我们是怎么做C端高并发商品系统的
java·后端·架构
代码丰1 天前
一文讲清楚: SSE、WebSocket 与 HTTP的关系
后端
代码丰1 天前
java 21虚拟线程vs传统线程 原理分析以及具体测试例子去分析性能提升
后端
用户0534369380731 天前
langchainrust:Rust 版 LangChain 框架(LLM+Agent+RAG)
后端
fox_lht1 天前
第十章 通用集合
开发语言·后端·算法·rust
悟空聊架构1 天前
GStack的26种专家角色,真正实现一人成军!
后端
counting money1 天前
Spring框架基础(依赖注入-半注解形式)
java·后端·spring