我已将池配置为自动启动且永不休眠。我在自动启动时遇到问题。我的理解是,当发生这种情况时,将在回收后启动线程池工作程序,我假设将调用应用程序入口点,但是,这似乎不起作用。
部署应用程序后,我在“IIS AspNetCore Modeule”V2 接收器下看到以下日志条目。
- 2022 年 1 月 28 日上午 9:25:15 - 运行作业:发布
- 2022 年 1 月 28 日上午 9:25:28 - 应用程序“C:<path to app>”在检测到 app_offline.htm 后被回收。
- 2022 年 1 月 28 日上午 9:25:29 - 应用程序“MACHINE/WEBROOT/APPHOST//”已关闭。
- 2022 年 1 月 28 日上午 9:25:33 - 工作发布完成,结果:成功
在哪里
- DevOps 微服务构建 - 开始
- 回收(构建创建 app_offline)
- Api 关闭
- DevOps 微服务构建开始 - 成功
我很困惑没有关联的 api 启动消息,例如 - Application 'C:<path to app>' 已成功启动。
需要注意的是,这是一个不接受任何 http 请求的 .NET Core API“微服务”。在代码中,启动具有此配置。
services.AddHostedService<AuthorizationMessageConsumerService>();
和
public class AuthorizationMessageConsumerService : BackgroundService
如果在每次部署之后,/health 端点都被 ping 通,那么服务就会启动。
我只能猜测 AlwaysRunning 只是创建了一个新的请求线程,但没有调用任何入口点,它被传入的 http 请求 /health 调用。
我试图避免将 ping 设置为构建和部署要求。是否有任何选项或者按时间间隔设置运行状况 ping 和部署后是最佳解决方案?
我缺少的一件事是 IIS 应用程序级别的 Preload Enabled=true。由于部署或其他任何原因,这基本上会在回收后发送启动您的应用程序的请求。