当Azure应用服务启用了身份验证时,是否可以使用SwapWithPreviewAction命令开关交换部署插槽?

时间:2017-09-19 15:17:01

标签: azure azure-web-sites azure-powershell

我的应用服务

  • 在Azure上运行
  • 启用了身份验证(API Management - ClientId和Secret)
  • 有一个名为staging的部署插槽

在我们启用身份​​验证之前,我们可以运行以下powershell命令来交换暂存和生产槽:

Switch-AzureRmWebAppSlot -SourceSlotName "staging" -DestinationSlotName "production" -Name "app1" -ResourceGroupName "group1" -verbose -SwapWithPreviewAction ApplySlotConfig

使用预览交换允许我们在将用户切换到新部署的版本之前验证部署的代码是否适用于生产配置设置。

但是,在我们启用身份​​验证以保护我们的应用后,我们现在使用SwapWithPreviewAction

收到以下错误
Switch-AzureRmWebAppSlot : Swap with Preview cannot be used when one of the slots has site authentication enabled.
At line:3 char:19
+ ... e-Command { Switch-AzureRmWebAppSlot -SourceSlotName "staging" -Desti ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : CloseError: (:) [Switch-AzureRmWebAppSlot], CloudException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.WebApps.Cmdlets.DeploymentSlots.SwitchAzureWebAppSlot

有没有人知道是否可以在启用身份验证的情况下运行交换?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

如果您使用身份验证授权,则无法进行2阶段交换(也称为预览交换),但您应该可以进行常规交换。

这里的主要原因是身份验证/授权功能依赖于配置正确的主机名,以便在身份验证握手后将请求重定向回应用程序。

这也是认证/授权对插槽粘性的原因。

修改 我附上了一个屏幕截图,显示了API为此操作生成的错误。

enter image description here