我正在使用Powershell中的Kudu Azure Zip Deploy API。
如何确保在wwwroot中提取已部署的zip文件夹的内容,而其中的wwwroot是包含的文件夹?
当前
:(这里的zip文件夹是wwwroot中的容器)
/ site / wwwroot / MYZIPFOLDERNAME / CONTENTS
预期:
(我希望将zip文件夹的内容直接添加到wwwroot并在zip文件夹名称之外)
/ site / wwwroot / CONTENTS
我已遵循以下文档,并具有如下的powershell脚本:
https://docs.microsoft.com/en-us/azure/app-service/deploy-zip
#PowerShell
$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<zip_file_path>"
$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"
脚本完成后,压缩文件将上传到我的网站,但是内容打包在文件夹中并嵌套在wwwroot目录下。
如果我使用ZipDeployUI并拖动文件夹,它会解压缩到wwwroot /目录中,而不会出现预期的文件夹名称。
答案 0 :(得分:1)
我按照官方文档Deploy your app to Azure App Service with a ZIP or WAR file
来运行With PowerShell
小节中的PowerShell脚本,可以,并且工作正常。
您的问题是由zip文件的文件结构引起的。我会告诉你区别。
我的本地目录D:\projects\xml
中有两个xml文件。我使用两种不同的方式将它们打包到一个zip文件xml.zip
中:带容器xml
,不带任何容器,如下图所示,通过7-zip
。
图1.压缩文件xml
中的容器xml.zip
图1.1。容器xml
包含两个xml文件
图2. zip文件xml.zip
中没有容器
然后,我使用不同的zip文件(具有不同的文件结构)运行相同的PowerShell脚本,在WebApp的ZipDeployUI
中得到了不同的结果,如下图所示。
图3.使用包含容器xml
的zip文件运行PowerShell脚本,将xml
容器解压缩到wwwroot
图3.1。容器xml
中路径wwwroot/xml
下的两个xml文件
图4.使用没有容器的zip文件运行PowerShell脚本,将两个xml文件直接在wwwroot
下解压缩
因此,如果您使用的是7-zip
之类的工具,请直接将这些文件打包为zip文件,而不是打包其父目录。或者在PowerShell命令行中,首先cd
移至包含要打包的这些文件的目录,然后运行Compress-Archive -Path * -DestinationPath <file-name>.zip
以获取zip文件,如Create a project Zip file
所述。< / p>
希望有帮助。