我在Azure上运行WebApp,WebApp的目的是从Azure存储队列处理作业。它设置为Always On。问题是,当我在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)
{
}
我有跟踪日志记录,因此我可以看到作业永远不会被停止。
答案 0 :(得分:1)
WebJobs在主机WebApp的特殊SCM (source control management) site下运行。当您在门户中停止WebApp时,WebApp的SCM部分将继续运行,因为它为WebApp提供了即使在停止时也需要可用的管理功能。
要停止运行WebJob,您可以通过右键单击作业列表中的作业并选择"停止"来在门户网站UI中禁用它。您还可以通过将 WEBJOBS_STOPPED 应用设置设为1(details here)来停止WebApp中的所有作业。