【问题标题】:Azure webjob argumentAzure 网络作业参数
【发布时间】:2017-07-06 14:13:29
【问题描述】:

我将控制台应用程序发布为 Azure WebJob。我想每天早上 0.30 运行 webjob。但只是为了测试,我目前每 5 分钟尝试一次。哪个工作正常。但我也想使用一个参数,将 arg[0] 传递给我的 static void Main(string[] args) 方法。

我的网络部署.pubxml

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect>
    <PublishProvider>AzureWebSite</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>http://testProjectHello.azurewebsites.net</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
    <MSDeployServiceURL>testProjectHello.scm.azurewebsites.net:443</MSDeployServiceURL>
    <DeployIisAppPath>testProjectHello</DeployIisAppPath>
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <UserName>$testProjectHello</UserName>
    <_SavePWD>True</_SavePWD>
    <_DestinationType>AzureWebSite</_DestinationType>
  </PropertyGroup>
</Project>

webjob-publish-settings.json:

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "webjobNameTest",
  "runMode": "OnDemand"
}

我的 settings.job 文件:

{
  "schedule": "0 */5 * * * *"
}

在 azure 门户中,我看到以下内容:

姓名类型状态时间表

webJobNameTest 触发就绪 0 */5 * * * *

如何在我的网络作业中传递参数?是否也可以从一个控制台应用程序部署多个具有不同参数的 Azure Web 作业?所以我可以每天、每周和每月运行网络作业。包括一个参数,以便我的逻辑知道是获取日、周还是月数据。

【问题讨论】:

  • 你看过这个问题吗? stackoverflow.com/questions/35362847/…
  • 这样,看起来我必须创建一个控制台应用程序并为每个变量部署它。我还看到可以通过 WEBJOBS_NAME 环境变量获取网络作业名称。这样我就不需要创建一个新的控制台应用程序,但我将不得不改变逻辑。我希望有一种方法,只需单击一下即可部署具有 3 个不同参数的 3 个 Web 作业。
  • 是的,我明白你在说什么。也许试试这个建议? stackoverflow.com/questions/25735831/…

标签: c# azure cron command-line-arguments azure-webjobs


【解决方案1】:

发布作为答案,因为我没有资格参加 cmets。这对我有用。

第 1 步 - 在 %HOME%* 文件夹下创建一个新的子文件夹,您的自定义控制台 exe 将驻留在该文件夹中

  • 浏览到 Azure 门户。
  • Service App下新建一个Web App
  • Service App 下的工具菜单中,启动 Kudu 网站
  • 在 Kudu 网站上,点击 Debug Console --> CMD

例如在我的例子中,我在 d:\Home 下创建了一个子文件夹 Tool 并上传了 MyConsole.exe 和随附的文件,例如 DLL 和 MyConsole.exe。配置到 d:\Home\Tool

第 2 步 - 创建一个 BAT 文件以启动您的自定义控制台 EXE

我在本地磁盘上创建了一个 .BAT 文件,例如 Launcher.bat。这个 BAT 文件只有 1 行

d:\Home\Tool\MyConsole.exe arg1  arg2

第 3 步 - 使用 BAT 文件创建计划的 Web 作业

  • 浏览到 Azure 门户。
  • App Services 中选择您的 Web 应用程序
  • 选择网络作业

创建计划的网络作业。上传您在之前的步骤中创建的 Launcher.BAT 文件。配置计划并创建作业。

注意事项

  1. 您需要为每个命令行参数实例创建一个新的 .BAT 文件
  2. 但是您不需要复制二进制文件

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多