我使用Visual Studio 2015将Web应用程序和各种相关(连续)webjobs部署到Azure。直到最近,我的观察结果是,在部署过程之后,webjobs将保持其状态;如果作业正在运行,则在代码更改后将重新启动。如果作业已停止,则代码将更新,并且webjob将保持“已停止”状态。
我现在看到的行为是Stopped webjobs在部署后开始。这不是我想要的行为,因为工作因某种原因而停止。我发布新版本的Web应用程序代码和/或webjob代码这一事实不应该被框架视为应该更改webjobs运行状态的假设。
这种行为是否可控?
答案 0 :(得分:2)
Amit Apple对这个问题给出了很好的回应here。
"要将处于停止状态的连续WebJob部署,只需在WebJob的根目录(二进制文件)中添加一个名为disable.job的文件,这将告诉框架WebJob当前已停止。"
我快速搜索了Kudu回购,看起来这仍然有效。但它实际上并不在Kudu文档中。
答案 1 :(得分:0)
从kudu项目的ContinuousJobRunner.cs,我们可以发现IsDisabled
属性用于检查webjob是否启用,如下所示:
private bool IsDisabled
{
get { return OperationManager.Attempt(() => FileSystemHelpers.FileExists(_disableFilePath) || Settings.IsWebJobsStopped()); }
}
众所周知,对于连续的WebJobs,我们有以下方法来阻止它。
1)在" SETTINGS>下登录Azure Portal。应用程序设置"刀片,添加新的appsetting WEBJOBS_STOPPED 并将值设置为1
注意:此设置会禁用触发的网络工具和连续的网络工作。
2)在WebJob二进制文件的根目录中添加名为disable.job
的文件
您可以在" SETTINGS>下登录Azure Portal。 WebJobs"您的网络应用程序的刀片,选择您的webjob并单击"停止"。此外,您可以手动添加此文件。对于以编程方式,您可以使用基本身份验证使用WebJobs API使用您的网络应用的 Deployment credentials来启动/停止您的WebJob。
我现在看到的行为是Stopped webjobs在部署后开始。这不是我想要的行为,因为工作因某种原因而被停止。
对于连续的WebJobs,我测试了这个问题,发现在我发布我的网络应用程序或webjob之后,webjobs将保持其状态(停止/运行)。总之,请检查如何停止连续的WebJobs,并且可以创建一个新的webjob来隔离此问题。