我刚刚创建了一个天蓝色的Web作业。我安排它每1分钟运行一次:
0 */1 * * * *
这是代码
var host = new JobHost();
Console.WriteLine("Starting program...");
var unityContainer = new UnityContainer();
unityContainer.RegisterType<ProgramStarter, ProgramStarter>();
unityContainer.RegisterType<IOutgoingEmailRepository, OutgoingEmailRepository>();
unityContainer.RegisterType<IOutgoingEmailService, OutgoingEmailService>();
unityContainer.RegisterType<IDapperHelper, DapperHelper>();
//var game = unityContainer.Resolve<IOutgoingEmailRepository>();
var program = unityContainer.Resolve<ProgramStarter>();
program.Run().Wait();
Console.WriteLine("All done....");
host.RunAndBlock();
问题是状态永远不会变为“成功”。我做错了吗?以下是我使用的应用程序设置,我应该更改吗?我也注意到它第一次运行,我相信它是因为它永远不会结束
答案 0 :(得分:3)
您可以在KUDU
上查看您的webkjob日志。
如果您在RunAndBlock
方案中使用上述作业,那么您的工作必须是连续的。这意味着,该过程将一直运行。
显然,您在这里使用的是Trigger webjob
,而不是Continuous
。此处不能使用RunAndBlock
方法。
WEBJOBS_IDLE_TIMEOUT - 我们将中止的时间(以秒为单位) 如果它处于空闲状态,没有cpu时间或者没有cpu时间,则运行触发的作业进程 输出(仅适用于已触发的作业)。
此外,我注意到您将WEBJOBS_IDLE_TIMEOUT
设置为100000
。似乎该值太大,以至于它使您的webjob在闲置时不会长时间停止。
您还可以在settings.job文件中指定作业的宽限期(以秒为单位),其中设置的名称为stopping_wait_time
,如下所示:
{ "stopping_wait_time": 60 }
更多详情,请参阅此doc。
希望它对你有所帮助。