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

标签 azure azure-webjobs asp.net-webhooks

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

使用用户名密码从Webhook手动触发WebJob 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));
    }
}

这是当我通过 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

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

最佳答案

这归结为 VS 发布错误。问题是它自动生成一个 run.cmd ,其中包含:

dotnet foo.dll

当它真正应该有时:

dotnet foo.dll %*

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

我将报告该问题,但目前您可以按如下方式解决:

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

这将导致您的 run.cmd 得到部署,并且 VS 不会自动生成错误的。

关于从 webhook 调用时,Azure WebJob 控制台应用程序参数为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775863/

相关文章:

c# - WordPress WooCommerce ASP.net API WebHookHandler : The WebHook request must contain an entity body formatted as HTML Form Data

asp.net-mvc - ASPNET 等待网页上的 Webhook 响应/结果

azure - AzureAppService 中的线程计数指标

azure-webjobs - 使用静态内容文件部署 WebJob

azure - 如何从azure webjob实现日志记录到azure eventhub

azure - 有没有办法使用 Powershell 获取 Azure 资源属于哪个 Log Analytics 工作区?

c# - 从 Azure 函数调用 Asp.Net Web API 端点

模拟器中的 Azure 角色不断发生变化?

azure - 如何在 azure 发布管道中跨代理作业使用输出变量

azure - 使用 powershell 将 Azure Webapp 插槽交换到生产插槽