从 webhook 调用时,Azure WebJob 控制台应用程序参数为空

问题描述 投票:0回答:2

我正在开发 Azure WebJob。 我首先在 Visual Studio 中创建一个控制台应用程序,然后将该应用程序作为 webJob 发布在 VisualStudio 的 Portal.azure 中。

WebJob 是通过第二个程序中的

username
password
https://{MyWebAPP}.scm.azurewebsites.net/api/triggeredwebjobs/{MyWebJob}/run?arguments=1 2 3
从其 Webhook 手动触发的。

这个 WebJob 非常简单。它只显示参数 1,2 和 3。

当我像这样从 CommandeLine 运行程序时

dotnet MyProject.dll 
1 2 3
它运行良好。 但是当我从 webHook 运行它时,它不会读取参数。

这是我的主要脚本:

 class Program
{
    static void Main(string[] args)
    {

        Console.WriteLine("PARAMS Passed : " + string.Join(",", args));
    }
}

这是我通过 Post 请求从 WebHook 运行时 WebJob 中的日志:

[06/09/2018 15:19:37 > 33a9f2: INFO] PARAMS Passed :

这是我从命令行运行它时的控制台:

[06/09/2018 15:19:37 > 33a9f2: INFO] PARAMS Passed : 1,2,3

请有人帮忙吗? 谢谢大家。

azure azure-webjobs asp.net-webhooks
2个回答
9
投票

这归结为 VS 发布错误。问题是它会自动生成一个

run.cmd
,其中包含:

dotnet foo.dll

当它真正应该有时:

dotnet foo.dll %*

以便参数流入您的控制台应用程序。

我将报告该问题,但现在您可以按以下方式解决:

  • 在控制台应用程序的根目录(即program.cs旁边)显式创建一个
    run.cmd
    。使用
    %*
    使其包含上面的正确行。显然,使用您实际的 dll 名称而不是 foo.dll :)
  • 将其添加到您的项目中,并将
    Copy to Output Directory
    设置为
    Copy Always
    (默认为不复制)。

这将导致您的

run.cmd
被部署,并且 VS 不会自动生成错误的。


0
投票

@David Ebbo:我知道这已经很旧了,但是当我们像 Project Test.dll 这样的 .dll 文件中有空格时,run.cmd 文件应该是什么

© www.soinside.com 2019 - 2024. All rights reserved.