2016-11-04 24 views
1

我们有一个Azure应用服务(网站),它有一个额外的部署插槽,名为离线,当我们将主网站离线进行维护时,我们想要使用该服务。如何判断哪个Azure应用程序服务(网站)插槽处于“活动”状态?

我想写一个PowerShell脚本,它将在这个离线插槽和生产插槽之间切换,反之亦然,这取决于传递给脚本的参数。但是,切换发生时,脚本还必须执行其他操作,因此了解哪个插槽当前处于“活动状态”很重要。

问题是,我找不到一种方法来确定这一点。我使用的是资源管理器的cmdlet(*-AzureRm*),虽然我可以打电话:

Get-AzureRmWebAppSlot -ResourceGroupName xxx -Name websitename -Slot offline 

,这个回报中有什么可以帮助我,据我可以告诉的对象。对于由Get-AzureRmWebApp返回的对象,情况也是如此。

由于这似乎没有资源管理器cmdlet,有没有其他技术可以使用?我现在所能想到的只是在离线网站上存在一个特定的网页,并通过查询实时网站来检查该网页是否存在:这应该告诉我哪个插槽当前处于活动状态。虽然这看起来有些不合适。

+0

要么我不是这个完全清楚或可能的方式脱节但是,这不是websitename生产(有-procuction为后缀)的总“积极”的? – JFM

+0

如果Web应用程序名为_foo_并且有一个称为_offline_的插槽,则会有两个域:foo.azurewebsites.net和foo-offline.azurewebsites.net。当两个插槽交换时,域保持不变,但它们的内容被切换,即。访问foo.azurewebsites.net会显示以前在foo-offline.azurewebsites.net中的内容,反之亦然。 AFAIK没有foo-production.azurewebsites.net这样的东西(事实上,这会导致404 Host Not Found错误)。 –

+0

我试图得到的是,是的,foo.azurewebsites.net始终是“活跃”网站,因为它是您向用户发布广告的域名(尽管您可能会使用自定义域名为公共场所)。该网站始终存在,并始终通过相同的URL提供。但是,我需要能够通过编程方式(通过PowerShell)确定当前将哪些_content_部署到该域。换句话说,如果我现在去foo.azurewebsites.net,我会得到实时网站内容还是离线网站内容。 –

回答

1

您可以设置标识该应用程序的非插槽特定应用程序设置。在进行交换时,这将与应用程序一起交换。

E.g.使用密钥AppVersion设置应用设置,值生产在生产槽上,并且应用设置使用相同的密钥和值离线位于脱机槽上。

您可以访问应用程序设置使用PowerShell这样的:

(Get-AzureRmWebApp -ResourceGroupName your-resource-group -Name your-webapp).SiteConfig.AppSettings 
+0

阅读此内容的其他人的重要组成部分是应用程序设置是**非特定于插槽的**,即不与插槽绑定。 –

相关问题