如何将 asp.net 核心 Web 作业发布到 Azure 应用服务

How to publish asp.net core web job to azure app service

我已经开始使用 asp.net 核心 2 网络应用,我可以使用网络部署从 Visual Studio 将其发布到应用服务。

我创建了新的干净的 .net core 2 控制台应用程序。我可以使用 Azure 门户将其上传为网络作业和 运行,但是 我如何从本地命令行或 Visual Studio 发布它?

基本上,我不关心它是与 Web 应用程序一起发布还是独立发布。

编辑:我以某种方式设法通过右键单击项目并选择发布(而不是发布为 Azure WebJob)来获取发布对话框,如文档中所述。但我仍然不知道是什么把戏。安装 Azure SDK?添加 webjob-publish-settings.json?添加 Setting.job?

关于 Develop and deploy WebJobs using Visual Studio - Azure App Service 的一篇很棒的文章涵盖了您的问题。

基本上安装先决条件后(取决于你的VS版本)你可以 Right-click 解决方案资源管理器中的控制台应用程序项目,然后单击 发布为 Azure WebJob

使用 Azure 门户将 .net 核心发布为 webjob:

如您所知:

WebJob 查找特定文件类型,例如(.cmd、.bat、.exe 等...) 要 运行 .NET Core 控制台应用程序,您可以使用 DOTNET 命令

因此,您需要创建一个扩展名为 WebJob 的文件来寻找执行的文件。

1.You 可以创建 .net 核心控制台应用程序。在 运行 之后,您将在 projectname/bin/Debug/netcoreapp2.0

中拥有以下文件

2.Create 下有一个 run.cmd 文件。 run.cmd 内容如下:

@echo off

dotnet ConsoleApp7.dll

3.To 将 .NET Core 控制台应用程序部署到 Azure 应用服务 Web 应用 Web 作业访问 Azure 门户并导航到您将在其中托管 WebJob 的 Azure 应用服务。 单击 WebJobs link 和添加按钮。 4.Upload netcoreapp2.0.zip

5.Once WebJob 已成功上传,它将在 WebJob blade 中呈现。单击它,您将看到 运行 按钮。

6.When 您使用 WriteLine() 方法将输出写入控制台,它将显示在 运行 详细信息 window 上 KUDU/SCM。

更详细的可以参考这个article and this one.

更新:(使用命令行发布)

1.First,从 Azure 门户下载您的 webapp 的发布设置文件。

2.Prepare 您创建的 .zip 文件夹。

正如 David 所说,您可以使用 WAWSDeploy 通过命令行发布 webjob。 您可以使用 link.

下载 WAWSDeploy

3.Then进入WAWSDeploy/bin/Debug文件夹打开本地命令行。 尝试使用以下命令来部署网络作业:

WAWSDeploy.exe DotNetCoreWebJobSample.zip [WEBSITE_NAME].PublishSettings /t app_data\jobs\triggered\DotNetCoreWebJobSample /v

目标目录将为 app_data\jobs\triggered\[WEBJOB_NAME]。如果此 Web 作业是连续 运行ning 作业,请将触发替换为连续。

注意:您可以将 WAWSDeploy.exe 和发布设置文件以及 .zip 放入一个文件夹中。如果没有,您应该提供发布设置和 .zip 文件的完整路径。这样您就可以成功发布webjob了。

有关 WAWSDeploy 的更多详细信息,请参阅此 article

确保您的 csproj 包含正确的 SDK:

<Project Sdk="Microsoft.NET.Sdk;Microsoft.NET.Sdk.Publish">

然后只需右键单击 Visual Studio 中的项目并单击发布,select Microsoft Azure App Service 您应该会看到 WebJob 发布选项:

另请注意,您应该使用 Microsoft.NET.Sdk 而不是 Microsoft.NET.Sdk.Web

如果您正在使用 Microsoft.NET.Sdk.Web,Visual Studio 假定您正在部署到 WebSite 而不是 WebJob。 WebSite 和 WebJob 的发布对话框略有不同。例如,对于 WebJob 项目,您可以指定 WebJob 名称。

您可能感兴趣: