ASP.NET Core自托管程序需持续运行,非IIS环境替代方案咨询
自托管ASP.NET Core程序持续运行的替代方案
针对你的自托管.exe程序,以下几种方案可确保它在无连接时段持续运行:
1. 注册为Windows服务
这是Windows环境下最稳定的方案,服务随系统自动启动,无用户登录时也能保持运行:
- 用原生命令注册:执行
sc create "你的服务名称" binPath= "C:\程序路径\your-app.exe" start= auto(注意binPath=和start=后必须留空格) - 在服务管理器中设置启动类型为自动,并配置恢复策略(如程序崩溃后自动重启)
- 也可通过.NET工具简化适配:安装
dotnet tool install -g Microsoft.Extensions.Hosting.WindowsServices,在Program.cs中添加UseWindowsService(),让程序更好地兼容服务运行模式
2. 使用NSSM包装为服务
NSSM是一款轻量工具,能将任意exe转为服务,支持图形化配置,比原生服务更灵活:
- 下载NSSM后运行
nssm install "你的服务名称",在弹出界面中指定exe路径、工作目录等参数 - 配置完成后服务自动注册,可直接设置自动启动和崩溃恢复规则
3. 程序内部配置保活逻辑
在代码层面避免程序因闲置终止:
- 在
Program.cs中禁用Kestrel的闲置超时,确保后台任务不受影响:builder.WebHost.ConfigureKestrel(options => { options.Limits.IdleTimeout = Timeout.InfiniteTimeSpan; }); builder.Services.AddHostedService<你的后台任务类>(); - 后台任务中添加定时自检逻辑,比如每隔一段时间向自身发送简单请求,避免被系统判定为闲置进程
4. 用任务计划程序做进程监控
通过Windows任务计划程序实现兜底监控,确保程序意外终止后自动重启:
- 创建触发条件为「系统启动时」和「每隔10分钟」的任务
- 操作设置为启动你的exe,同时勾选「如果程序已运行则不启动新实例」
内容的提问来源于stack exchange,提问作者Damien R
相关产品推荐
相关产品推荐

