0

我有一个在 Azure 上运行的 WebApp,WebApp 的目的是处理来自 Azure 存储队列的作业。它设置为始终开启。问题是,当我在 Azure 管理门户中停止 WebApp 时,作业实际上并没有停止。

我实例化了这项工作:

class Program
    {
        static void Main()
        {
                string connectionString = ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;

                JobHostConfiguration config = new JobHostConfiguration(connectionString);
                config.NameResolver = new QueueNameResolver();

                JobHost host = new JobHost(config);

                // The following code ensures that the WebJob will be running continuously
                host.RunAndBlock();
        }
    }

处理队列的函数是:

public static void ProcessQueueMessage([QueueTrigger("%apilogeventqueue%")] CloudQueueMessage messageEnvelope, TextWriter log, CancellationToken token)
{

}

我有跟踪日志记录,所以我可以看到这项工作实际上从未停止过。

4

1 回答 1

1

WebJobs在宿主 WebApp的特殊SCM(源代码控制管理)站点下运行。当您在门户中停止 WebApp 时,WebApp 的此 SCM 部分将继续运行,因为它为 WebApp 提供即使在停止时也需要可用的管理功能。

要停止运行 Web 作业,您可以在门户 UI 中通过右键单击作业列表中的作业并选择“停止”来禁用它。您还可以通过将WEBJOBS_STOPPED应用程序设置设置为 1 来停止 WebApp 中的所有作业(此处有详细信息)。

于 2015-12-23T16:02:15.170 回答