我正在使用Visual Studio 2015部署Web应用程序和各种相关的(连续)WebJobs。直到最近我的观察结果是,在部署过程之后,WebJobs将保持其状态;如果工作正在运行,则如果更改代码,它将重新启动。如果工作停止,代码将更新,WebJob将保留在停止状态。
我现在看到的行为是停止的WebJobs开始部署后开始。这不是我想要的行为,因为由于某种原因而停止工作。我要发布一个新版本的Web应用程序代码和/或WebJob代码的事实不应被视为由该框架的假设,即应更改WebJob的运行状态。
此行为可以控制?
amit苹果在这里对这个问题做出了很好的回应。
"要在停止状态中部署一个连续的WebJob,只需在您的WebJob(binaries)的根部添加一个名为disable.job的文件,这将告诉框架当前webjob当前停止。"
> >我快速搜索了kudu存储库,看来这仍然有效。不过,它实际上并不在Kudu文档中。
来自kudu项目的连续jobrunner.cs,我们可以发现IsDisabled
属性用于检查WebJob是否启用了如下:
private bool IsDisabled
{
get { return OperationManager.Attempt(() => FileSystemHelpers.FileExists(_disableFilePath) || Settings.IsWebJobsStopped()); }
}
我知道,对于连续的WebJobs,我们有以下方法来阻止它。
1)在"设置>"应用程序设置"刀片下登录到Azure Portal,添加一个新的AppSetting WebJobs_stopped 并将值设置为1
注意:此设置将禁用触发的WebJobs和连续的WebJobs。
2)在WebJob二进制文件的根部添加一个名为disable.job
的文件
您可以在Web应用程序的"设置> WebJobs"刀片下登录到Azure Portal,选择您的WebJob,然后单击"停止"。另外,您可以手动添加此文件。以编程方式,您可以使用Web应用程序的部署凭据来利用WebJobs API来启动/停止WebJob。
我现在看到的行为是停止的WebJobs开始部署后开始。这不是我想要的行为,,因为作业被停止,原因。
对于连续的WebJobs,我已经测试了这个问题,发现WebJobs在发布我的Web应用程序或WebJob后将维护其状态(停止/运行)。总而言之,请检查如何停止连续的WebJobs,您可以创建一个新的WebJob来隔离此问题。