从webhook调用时,Azure WebJob控制台应用程序空Args

Waj*_*khi 2 azure azure-webjobs asp.net-webhooks

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

该WebJob与触发Manualy从其网络挂接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));
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

可以帮助一些人.Tha,ks From All.

Dav*_*bbo 8

这归结为VS发布错误.问题是它自动生成一个run.cmd有:

dotnet foo.dll
Run Code Online (Sandbox Code Playgroud)

当它真的应该有:

dotnet foo.dll %*
Run Code Online (Sandbox Code Playgroud)

这样参数就会流入你的控制台应用程序.

我会报告这个问题,但是现在你可以解决如下问题:

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

这将导致您run.cmd部署,VS将不会自动生成故障.

  • 谢谢你,谢谢你,谢谢你.我快死了你是一个神.非常感谢大卫太太 (5认同)