如何使用 Power shell 自动将 Web 作业部署到 Azure 门户

How to automatically deploy a web job to Azure portal using Power shell

我一直在寻找使用 PowerShell 自动将 Web 作业部署到 Azure 的方法。我看到一些描述步骤的博客,下面总结了我尝试过的方法

  1. 我在发布模式下构建我的应用程序(ASP.NET 控制台应用程序)并将 bin/Release 的内容压缩到一个文件夹中。

  2. 在 PowerShell 中,我使用 az login 登录

  3. 然后我尝试了下面的命令

    Invoke-WebRequest -Uri https://$applicationName.scm.azurewebsites.net/site/wwwroot/app_data/jobs/triggered/$webJobName ` -InFile $ZipFile -ContentType "application/zip" -Method Put

$ZipFile 包含我在步骤 1 中创建的文件夹的路径。

我得到的输出如下

Invoke-WebRequest : 由于请求实体太大,页面未显示

如果您知道问题出在哪里或者您有任何有用的参考,请告诉我。

提前致谢!

感谢大家的参与!您的意见很有帮助,但我想用我发现的解决方案更新答案,该解决方案非常简单并且节省了我很多时间。我想向您介绍如何一次成功部署应用程序服务和 Web 作业。它非常简单,而且因为它一次性部署了 Web 应用程序和相应的 Web 作业,所以这是适合我的场景的完美解决方案。感谢帮助我解决此问题的同事。 下面描述了我必须经历的步骤。

假设我在 Azure 中的应用服务是“appService1”,我想在 appService1 下创建一个名为“webJob1”的触发式 Web 作业。 我用 azure cli 关注 zip-deployment。

  1. 以发布模式发布您的 Web 应用程序(对于应用程序服务)解决方案以获取您必须部署的文件。让这个文件夹成为 WebAppBuild.
  2. 构建您的应用程序(在我的例子中是一个控制台应用程序),它将在发布模式下充当应用服务的 Web 作业。
  3. 在 Web 应用程序的已发布文件夹中(对于应用程序服务,即我们示例中的 WebAppBuild),添加具有以下路径的文件夹

app_data\jobs\triggered\webJob1

(如果您需要部署多个 Web 作业,您可以创建多个文件夹,如 webJob2、webJob3 等)

将步骤 2 中的文件添加到此文件夹。这基本上是您的网络作业所需的文件

  1. 将内容压缩到一个文件夹中,作为 Web 应用程序和 Web 作业的部署文件夹
  2. 转到 powershell 和 运行 az 登录(如果你已经安装了 azure cli 就可以,否则你也必须安装它)
  3. 根据提示 window
  4. 登录到您各自的帐户
  5. 运行 以下命令将包 属性 中的 运行 设置为 true,第二个命令是实际的部署命令
az webapp config appsettings set --resource-group <<resourceGroupName>> --name <<appServiceName>> --settings WEBSITE_RUN_FROM_PACKAGE="1" ; 
az webapp deployment source config-zip --resource-group <<resourceGroupName>> --name <<appServiceName>> --src <<zipFilePath>>

  1. 现在登录到您的 Azure 门户并导航到您的 Web 应用程序。检查 web 作业选项,您将看到已使用您部署的文件创建了 web 作业。

有关使用 azure cli 启动、停止、删除 web 作业的更多帮助,请阅读以下文档。 Check here