告别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"
  • 开机自动启动
  • 尝试重启服务
相关推荐
Knight_AL11 分钟前
Spring 事务管理:为什么内部方法调用事务不生效以及如何解决
java·后端·spring
bcbnb17 分钟前
iOS代码混淆技术深度实践:从基础到高级全面解析
后端
加洛斯24 分钟前
SpringSecurity入门篇(2):替换登录页与config配置
前端·后端
用户83562907805129 分钟前
Python 实现 Excel 条件格式自动化
后端·python
源代码•宸1 小时前
Golang语法进阶(协程池、反射)
开发语言·经验分享·后端·算法·golang·反射·协程池
Chan161 小时前
场景题:CPU 100% 问题怎么排查?
java·数据库·redis·后端·spring
我是谁的程序员2 小时前
iOS 文件管理,在不越狱的前提下管理 iPhone / iPad 文件
后端
v***59832 小时前
springBoot连接远程Redis连接失败(已解决)
spring boot·redis·后端
桦说编程2 小时前
滑动窗口限流器的演进之路:从调度器实现到 Packed CAS
java·后端·性能优化
狗头大军之江苏分军2 小时前
告别旧生态:Ant Design 6 不再支持 IE 与现代前端趋势解读
前端·javascript·后端