当没有任何部署到生产槽时,Move-AzureDeployment PowerShell Cmdlet失败

时间:2012-11-19 03:58:18

标签: powershell azure

我从这里使用Windows Azure PowerShell Cmdlets v0.6.7:https://www.windowsazure.com/en-us/manage/downloads/

当我运行以下命令时:

Move-AzureDeployment -ServiceName $AzureServiceName

我收到以下错误:

Move-AzureDeployment : There was no endpoint listening at https://management.core.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/services/hostedservices/xxxxxxxxxxxxxxx/deploymentslots/Production that could accept the message.

错误有点正确,我的Staging插槽中只有部署。但是,Move-AzureDeployment文档(http://msdn.microsoft.com/en-us/library/windowsazure/jj152834.aspx)声明:

  

如果在暂存环境中存在部署但没有部署   在生产环境中,部署将转向生产。

同一脚本中的上述Azure PowerShell Cmdlet(例如New-AzureDeployment)已成功执行。我使用Set-AzureSubscription配置订阅信息和证书来启动脚本。

不确定我缺少什么,感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:2)

我也遇到了这个问题,并使用REST API进行交换。以下是有兴趣的人的样本。

    $webRequest = [System.Net.WebRequest]::Create("https://management.core.windows.net/$global:SubscriptionId/services/hostedservices/$serviceName")

    $webRequestContent = ("<?xml version=""1.0"" encoding=""utf-8""?><Swap xmlns=""http://schemas.microsoft.com/windowsazure""><Production>{0}</Production><SourceDeployment>{1}</SourceDeployment></Swap>" -f $productionDeploymentName, $stagingDeploymentName)
    $webRequest.Method = "POST"
    $webRequest.ClientCertificates.Add($global:ManagementCertificate)
    $webRequest.ContentType = "application/xml"
    $webRequest.ContentLength = $webRequestContent.length
    $webRequest.Headers.Add("x-ms-version", "2012-03-01")
    $writer = New-Object System.IO.StreamWriter($webRequest.GetRequestStream())
    $writer.Write($webRequestContent)
    $writer.Close()

    $webResponse = $webRequest.GetResponse()
    WaitForDeploymentState $serviceName 'Production' 'Running'
    WaitForRoleInstancesState $serviceName 'Production' 'ReadyRole'

答案 1 :(得分:1)

我认为有一个错误。我在这里创建了一个问题:

https://github.com/WindowsAzure/azure-sdk-tools/issues/785

答案 2 :(得分:0)

当我遇到同样的问题时,我发现了这一点。

在我的脚本中,如果我想运行Move-AzureDeployment我首先检查生产槽,如果它有内容,那么我切换(已经部署到脚本中的先前阶段)。

在Production为空的情况下,我将当前包重新部署到Production Slot,我可以对其进行优化以使用azure存储,但它现在可以用。

简而言之;文档错误或存在错误,如果生产为空,则无法使用此cmdlet。