【问题标题】:Azure webjob with runMode "OnDemand" keeps running带有 runMode“OnDemand”的 Azure webjob 继续运行
【发布时间】:2018-02-21 15:09:51
【问题描述】:

运行模式设置为“onDemand”的 azure webjob 继续运行,我无法停止它。

除了工作之外,我没有看到任何需要处理的事情。

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "ScheduledJob",
  "runMode": "OnDemand"
}


ScheduledJob  Triggered Running n/a 

重新启动的唯一方法是重新启动 Web 服务。然后手动启动作业。然后它继续运行。它不会停止。

这个网络作业是怎么回事?

更新1:

我正在使用 Pnp 合作伙伴包中的代码,可以在 here 找到。

由于代码有两个长,我只是在program.cs 文件中提供代码。 其余的请看我上面贴的。

 static void Main()
        {
            var job = new PnPPartnerPackProvisioningJob();
            job.UseThreading = false;

            job.AddSite(PnPPartnerPackSettings.InfrastructureSiteUrl);

            job.UseAzureADAppOnlyAuthentication(
                PnPPartnerPackSettings.ClientId,
                PnPPartnerPackSettings.Tenant,
                PnPPartnerPackSettings.AppOnlyCertificate);

            job.Run();

#if DEBUG
            Console.ReadLine();
#endif
        }

【问题讨论】:

    标签: azure-webjobs


    【解决方案1】:

    在您的代码中,PnPPartnerPackProvisioningJob 类继承自 TimerJob 类。 在 TimerJob 类中,没有停止方法。如果计时器作业已经开始执行,除非您重新启动 Web 作业,否则您无法真正停止它。更多详情可以参考这个article

    因此,如果您的要求是取消作业,则需要删除计时器作业定义。但是,如果计时器作业已开始执行,除非您重置 IIS 或停止 Sharepoint Windows 计时器服务,否则您无法真正停止它。

    【讨论】:

    • 或者根本不使用 WebJobs SDK。如果您只想调用一个可以正常工作的普通方法,则无需创建 JobHost。
    • 我正在使用 pnp 合作伙伴包 webjob。在 schedulerjob 中,他们不使用 runandblock()
    • 感谢您的更新代码。我也更新了我的答案,您的问题与 TimerJob 类更相关。
    • 感谢 Janley 的帮助。当我尝试学习 PnP 合作伙伴包并同时学习 WebJobs 时,我自己在 PnP 人员发布的一个视频中看到了 Paolo 在队列中创建消息并由连续作业处理后显示的视频几秒钟。就我而言,我根本看不到它。我没有看到正在创建队列。我不知道他们还有什么我没有配置的。
    • 嗨,我找到了一篇关于如何在 WebJobs 中创建队列的好文章。你可以参考。只需确保您的 Azure 队列名称等于 QueueTrigger 的队列名称。 danielcoding.net/azure-webjob-with-azure-queue
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多