我正在开发 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
请有人帮忙吗? 谢谢大家。
这归结为 VS 发布错误。问题是它会自动生成一个
run.cmd
,其中包含:
dotnet foo.dll
当它真正应该有时:
dotnet foo.dll %*
以便参数流入您的控制台应用程序。
我将报告该问题,但现在您可以按以下方式解决:
run.cmd
。使用 %*
使其包含上面的正确行。显然,使用您实际的 dll 名称而不是 foo.dll :)Copy to Output Directory
设置为 Copy Always
(默认为不复制)。这将导致您的
run.cmd
被部署,并且 VS 不会自动生成错误的。
@David Ebbo:我知道这已经很旧了,但是当我们像 Project Test.dll 这样的 .dll 文件中有空格时,run.cmd 文件应该是什么