触发型WebJob切换为持续运行模式的操作步骤正确性咨询
WebJob 触发型转持续运行模式操作校验及补充配置
现有步骤正确性确认
你列的两个基础操作是必要且正确的:
- csproj 文件修改:确认将
<WebJobType>节点的取值从Triggered改为Continuous即可,注意检查 CI/CD 流水线的打包发布步骤,避免存在硬编码的 WebJob 类型参数覆盖该配置 - settings.job 文件调整:删除原触发型配置的
schedule等规则,保留空 JSON{}即可,不会残留旧触发逻辑
需补充的操作与配置项
代码逻辑调整
不要使用阻塞式的 Thread.Sleep(xxx),推荐改用异步非阻塞的 await Task.Delay(xxx),同时必须在循环外层加全局异常捕获,避免单次业务报错直接终止整个 WebJob 进程,参考写法:
// 注入取消令牌,响应Azure进程终止信号 using var cancellationTokenSource = new CancellationTokenSource(); AppDomain.CurrentDomain.ProcessExit += (s, e) => cancellationTokenSource.Cancel(); while (!cancellationTokenSource.Token.IsCancellationRequested) { try { // 你的业务执行逻辑 } catch (Exception ex) { // 自行实现日志记录,不要将异常抛出到循环外层 Console.WriteLine($"执行异常:{ex.Message}"); } // 按业务需要调整等待间隔 await Task.Delay(TimeSpan.FromSeconds(60), cancellationTokenSource.Token); }
如果多实例部署时要求仅单实例运行 WebJob,可在 settings.job 中添加配置 "is_singleton": true,避免多实例重复执行业务。
Azure 服务配置
必须开启对应 App Service 的 始终开启(Always On) 配置,注意:免费/共享定价层不支持该功能,需要升级到基本层及以上规格,否则应用进程闲置超过20分钟会被系统回收,持续运行的 WebJob 也会同步终止。
部署后校验
CI/CD 部署完成后,进入 Azure 门户对应 App Service 的 WebJob 管理页,确认目标 WebJob 的类型为「持续」、状态为「正在运行」,避免部署配置残留导致类型未切换成功。
内容的提问来源于stack exchange,提问作者petercli
相关产品推荐
相关产品推荐

