Azure 交换不工作

Azure swap not working

我正在尝试使用 Switch-AzureWebsiteSlot,如下所示:

Switch-AzureWebsiteSlot -Name 'sitename' -slot1 'Staging' -slot2 'Production' -f 强制详细

然而,即使我的网站有 2 个插槽、登台和默认生产,我仍然从 Power Shell.

收到以下错误
Switch-AzureWebsiteSlot : The website must have at least two slots to apply swap
At line:1 char:1
+ Switch-AzureWebsiteSlot -Name 'sitename' -slot1 'St ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Switch-AzureWebsiteSlot], PSInvalidOperationException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.Websites.SwitchAzureWebsiteSlotCommand

你知道为什么吗?您在代码之旅中是否也遇到过这种情况?

Switch-AzureWebsiteSlot 适用于 ASM 网站。在你的情况下,我认为你已经创建了一个 ARM 网站,因此 Switch-AzureWebsiteSlot 不适合这里。

要为 ARM 网站交换插槽,您需要使用以下脚本:

$ParametersObject = @{targetSlot  = "[slot name – e.g. “production”]"}
Invoke-AzureRmResourceAction -ResourceGroupName [resource group name]-ResourceType Microsoft.Web/sites/slots -ResourceName [web app name]/[slot name] -Action slotsswap -Parameters $ParametersObject -ApiVersion 2015-07-01

您可以查看this article了解详情。

更新:

Switch-AzureWebsiteSlot 也适用于 ARM 网络应用程序。我的问题是我有两个订阅,之前测试命令时我没有 select 正确的订阅。感谢弗莱明!

之前:

现在订阅正确:

即使您在 ARM 中创建了应用程序,此命令也有效。

Switch-AzureWebsiteSlot -Name 'siteName' -slot1 'StagingDeploymentName' -slot2 'Production' -force -verbose

请检查您提供的名称以及名额是否已满以及 运行。

我通过停止其中一个部署槽来测试它,并出现与您遇到的相同的错误。所以,我现在可以肯定,在您的情况下,有一个插槽未处于 运行 状态。

对于 ARM 网络应用程序,Switch-AzureWebsiteSlot 对我来说根本不起作用。收到以下错误消息:

Switch-AzureWebsiteSlot : No default subscription has been designated. Use Select-AzureSubscription -Default to set the default subscription.

据我了解,Select-AzureSubscription 是一条 ASM 命令,因此不适用。 (相反,对于 ARM,我需要使用 Select-AzureRmSubscription。)

命令 Swap-AzureRmWebAppSlot 对我有用:

Swap-AzureRmWebAppSlot -Name "sitename" -SourceSlotName "Staging" -DestinationSlotName "Production" -ResourceGroupName "<Your Resource Group Name"