如何从部署服务器使用azure kudu zipdeploy

ibps3vxo  于 2021-06-20  发布在  Kudu
关注(0)|答案(1)|浏览(529)

我正在尝试找到一种方法,使用powershell从部署服务器脚本任务将应用程序服务更新部署到azure应用程序服务。
我在验证部分遇到了问题。
注:贷记https://markheath.net/post/deploy-azure-webapp-kudu-zip-api 对于剧本的想法。
下面是我的powershell脚本。

$PublishingUsername = ["The value of the userName property name in the Azure PublishSettings file"]

$PublishingPassword = ["The value of the userPWD property name in the Azure PublishSettings file"]

$SlotName = ["The name of the slot. I.e. qa"]

$WebAppName = ["The name of the app service in Azure"]

$LocalPath = ["The location of zip file that holds the VS2017 Publish Output files"]

function Upload-ZipDeploy() {

    $pair = "$($PublishingUsername):$($PublishingPassword)"
    $encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
    $basicAuthValue = "Basic $encodedCreds"

    $Headers = @{
        Authorization = $basicAuthValue
    }

    if ($SlotName -eq ""){
        $kuduApiUrl = "https://$WebAppName.scm.azurewebsites.net/api/zipdeploy"
    }
    else{
        $kuduApiUrl = "https://$WebAppName`-$SlotName.scm.azurewebsites.net/api/zipdeploy"
    }

    # use kudu deploy from zip file
    Invoke-WebRequest -Uri $kuduApiUrl -Headers $Headers `
        -InFile $LocalPath -ContentType "multipart/form-data" -Method Post

}

Upload-ZipDeploy

当我运行这个脚本时

Invoke-WebRequest : Server Error
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the 
credentials that you supplied.

我正在使用我下载的*.publishsettings文件中的username和userpwd值进行azure中的应用程序服务部署槽设置。我可以在vs2017的发布向导中导入相同的*.publishsettings文件,并成功发布到该插槽。我只是在powershell里做不到。
我错过了什么?

jexiocij

jexiocij1#

这里的解决方法相当简单。我使用的是来自publishsettings文件的microsoft生成的用户名,该用户名以$开头。所以,powershell剥离了$和第一个字符。我在用户名前面加了一个勾号,这样就防止了用户名被删除。它现在工作正常。
我还补充道the:443 after azurewebsites.net域,因为这是它在publishsettings文件中显示的方式,但我不确定它是否确实需要,因为url已经以https://开头了。

相关问题