计划的 Web 作业未按计划调用函数



我是Azure Webjob概念的新手。我正在尝试创建一个将被触发的WebJob。

程序.cs

static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
var host = new JobHost(config);
host.Call(typeof(Functions).GetMethod("MyMethod"));
host.RunAndBlock();
}

函数.cs

[NoAutomaticTrigger]
public static void MyMethod()
{
//Logic
}

我可以看到我的WebJob正在运行,但只是在部署的最开始调用函数。我可以通过使用函数调用日志来运行函数。

如果我没有错的话,它应该按照我的计划调用函数,对吧?

您在启动时使用此行host.RunAndBlock();触发作业

如果您希望它由时间表触发,只需在您的webjob项目中添加一个settings.job文件,其中包含您想要的的cron时间

例如

{
"schedule": "0 0 * * * *"
}

然后在你的程序.cs中,只需使用

using (var host = new JobHost(config))
{
host.Call(typeof(Functions).GetMethod("MyMethod"));
}

部署代码,不要忘记将settings.job复制到输出目录,cron设置应该在门户的应用程序webjob视图下可见

如果我没有弄错,它应该按照我的计划调用函数,对吗?

什么时间表?您没有配置任何计划。您所做的唯一一件事就是调用MyMethod一次(通过使用反射获取方法!(,然后在host上调用RunAndBlock

查看Azure应用程序服务中使用WebJob运行后台任务>创建计划的WebJob

你可以看看Azure功能。这可能也会有所帮助。

最新更新