我正在开发 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/