当我在Azure中交换部署插槽时,是否会重新启动Web作业?如果是,是否使用目标配置或源配置值重新启动?
在我的情况下,我不希望Web作业在暂存插槽中运行。为了解决这个问题,我有以下代码:
public static void Main()
{
// Only run web jobs when configured
bool enableWebJobs = false;
bool.TryParse(ConfigurationManager.AppSettings["EnableWebJobs"], out enableWebJobs);
if (enableWebJobs)
{
var host = new JobHost();
host.RunAndBlock();
}
else
{
// Sleep so the Azure web jobs platform doesn't try to continually restart the process
while (true)
{
Thread.Sleep(60000);
}
}
}
我只是不确定在使用正确的AppSettings进行交换后是否会重新启动Web作业。如果没有,那么这根本不起作用,因为EnableWebJobs将保持为假。
答案 0 :(得分:3)
配置也被交换,因此您的代码将无法正常工作。
使用Amit Apple的帖子 How to prevent Azure webjobs from being swapped in Azure website production <--> staging slots
要阻止WebJobs在暂存插槽上运行,您可以添加应用 设置名为WEBJOBS_STOPPED并将其设置为1(在天蓝色门户中)
我已使用此粘滞式插槽设置禁用了暂存的webjobs。
查看Kudu面板中的webjobs日志,当部署应用程序时,webjobs会启动并且不受实际交换的影响(AFAIK只是负载均衡器路由到新的live / stage)。
编辑:我错了。作为交换的一部分,重新启动。 (见Understanding site swaps)即:以下是您将源广告位(让我们称之为“暂存广告”)换成目标广告位(制作广告)时会发生的情况。
首先,Staging网站需要进行一些设置更改 应用程序设置和连接字符串标记为&#39; slot&#39;。那里 也可能需要与源控制相关的其他更改 应用。 这会导致暂存网站重新启动 ,这很好。
接下来,通过发送请求,Staging站点变得暖和起来 它的根路径(即&#39; /&#39;),等待它完成。
现在Staging网站很热,它会被转换为Production。 没有停机时间,因为它直接从一个温暖的站点到 另一个。
最后,以前是生产的网站现在正在暂存 需要应用一些设置,导致它重新启动。再次,这 很好,因为它发生在临时站点。