設定為 AlwaysRunning 的應用程式集區不會自動啟動託管服務

設定為 AlwaysRunning 的應用程式集區不會自動啟動託管服務

我已將池配置為自動啟動且從不休眠。我在自動啟動方面遇到問題。我的理解是,線程池工作線程將在回收後啟動,當發生這種情況時,我假設將調用應用程式入口點,但是,這似乎不起作用。

部署應用程式後,我在「IIS AspNetCore Modeule」V2 接收器下看到以下日誌條目。

  1. 1/28/2022 9:25:15 AM - 運行作業:發布
  2. 2022 年 1 月 28 日上午 9:25:28 - 應用程式「C:<應用程式的路徑>」在偵測到 app_offline.htm 後被回收。
  3. 2022 年 1 月 28 日上午 9:25:29 - 應用程式「MACHINE/WEBROOT/APPHOST//」已關閉。
  4. 2022 年 1 月 28 日上午 9:25:33 - 職位發布完成,結果:成功

在哪裡

  1. DevOps 微服務建置 - 開始
  2. 回收(建置創建app_offline)
  3. API關閉
  4. DevOps 微服務建置開始 - 成功

我很困惑沒有關聯的 api 啟動訊息,例如 - Application 'C:<path to app>' started successfully。

值得注意的是,這是一個不接受任何 http 請求的 .NET Core API「微服務」。在程式碼中,啟動有這樣的配置。

services.AddHostedService<AuthorizationMessageConsumerService>();

public class AuthorizationMessageConsumerService : BackgroundService

如果每次部署後,/health 端點都被 ping 通,則服務就會啟動。

我只能猜測 AlwaysRunning 只是創建了一個新的請求線程,但沒有呼叫任何入口點,該入口點由傳入的 http 請求 /health 呼叫。

我試圖避免將 ping 作為建置和部署要求。是否有任何選項,或按時間間隔設定運行狀況 ping 並在部署後是最佳解決方案?

IIS 配置

在此輸入影像描述

答案1

我缺少的一件事是 IIS 應用程式等級的 Preload Enabled=true 。這基本上會發送一個請求,以便在部署或其他原因回收後啟動您的應用程式。

相關內容