在IIS上部署的webapi程序中的后台任务不触发

Leo 20 信誉分
2024-08-15T08:28:44.7133333+00:00

如题,我有一个webapi项目部署在了IIS上。该项目有个简单的定时后台任务需要每天凌晨执行。

我使用了BackgroundService来开发了这个功能,在查看执行日志发现在这段时间这个后台任务并没有正确执行,奇怪的是在开发环境下它总是能被正确的触发。

后来我发现,应该是和IIS应用程序池的Idle Time-out有关。凌晨的时候我的站点没有人访问,于是站点应该是“休眠了”,所以我的后台任务就无法被正确触发。

我只能使用IIS部署站点,但是我还需要后台任务,该怎么办?

Internet Information Services
0 个注释 无注释
{count} 票

接受的答案
  1. XuDong Peng-MSFT 10,841 信誉分 Microsoft 供应商
    2024-08-15T09:49:07.1766667+00:00

    Hi @Leo,

    后来我发现,应该是和IIS应用程序池的Idle Time-out有关。凌晨的时候我的站点没有人访问,于是站点应该是“休眠了”,所以我的后台任务就无法被正确触发。 我只能使用IIS部署站点,但是我还需要后台任务,该怎么办?

    你已经找到了问题原因。因此,在这个情况下,你需要做的就是使得你的应用程序始终运行(不受你上面提到的空闲超时的影响)。

    你可以尝试按照以下步骤进行操作:

    1. 安装应用程序初始化模块(Application Initialization)
    2. IIS > 您的应用程序池 > 启动模式 > 始终运行
    3. IIS > 您的应用程序池 > 空闲超时 > 0
    4. IIS > 您的应用程序 > 高级设置 > 已启用预加载 > True

    Best Regards,

    Xudong Peng


    如果答案是正确的,请点击“接受答案”并点赞。 如果您对此答案还有其他疑问,请点击“评论”。

    注意:如果您想接收相关电子邮件,请按照我们的文档中的步骤启用电子邮件通知 此线程的通知。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。