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

Azure WebJob Console Application Empty Args when calling from webhook

我正在处理 Azure WebJob。 我首先在 Visual Studio 中创建了一个控制台应用程序,然后在 portal.azure 中从 VisualStudio 将应用程序发布为 WebJob。

WebJob 是从其 Webhook 手动触发的,来自第二个程序的 usernamepassword https://{MyWebAPP}.scm.azurewebsites.net/api/triggeredwebjobs/{MyWebJob}/run?arguments=1 2 3

这个 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));
    }
}

这是当我从 WebHook 通过 Post 请求 运行 时在 WebJob 中的日志:[06/09/2018 15:19:37 > 33a9f2: INFO] PARAMS Passed :

这是我从命令行 运行 时的控制台:[06/09/2018 15:19:37 > 33a9f2: INFO] PARAMS Passed : 1,2,3

有人可以帮忙吗? 谢谢大家。

这归结为 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 不会自动生成错误的。