我从这里使用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配置订阅信息和证书来启动脚本。
不确定我缺少什么,感谢任何帮助,谢谢!
答案 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)
我认为有一个错误。我在这里创建了一个问题:
答案 2 :(得分:0)
当我遇到同样的问题时,我发现了这一点。
在我的脚本中,如果我想运行Move-AzureDeployment
我首先检查生产槽,如果它有内容,那么我切换(已经部署到脚本中的先前阶段)。
在Production为空的情况下,我将当前包重新部署到Production Slot,我可以对其进行优化以使用azure存储,但它现在可以用。
简而言之;文档错误或存在错误,如果生产为空,则无法使用此cmdlet。