【问题标题】:Move-AzureDeployment PowerShell Cmdlet fails when nothing deployed to Production slot当没有部署到生产槽时,Move-AzureDeployment PowerShell Cmdlet 失败
【发布时间】:2013-01-03 02:53:22
【问题描述】:

我从这里使用 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.

错误有点正确,我的暂存槽中只有一个部署。但是,Move-AzureDeployment 的文档 (http://msdn.microsoft.com/en-us/library/windowsazure/jj152834.aspx) 指出:

如果暂存环境中有部署而没有部署 在生产环境中,部署将转移到生产环境。

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

不知道我错过了什么,感谢任何帮助,谢谢!

【问题讨论】:

    标签: powershell azure


    【解决方案1】:

    我也遇到了这个问题,并求助于使用 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'
    

    【讨论】:

    • 作为一个普通的 PowerShell 用户,如何加载证书对我来说并不明显。我终于解决了。我希望我可以节省其他人阅读这篇文章的时间。您可以使用: $global:ManagementCertificate=gci cert:\CurrentUser\My\ 其中 是证书指纹。这假定证书已安装在您的个人商店中。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多