我在Azure WebApp中使用WebJob。该作业执行的方法:如何在回收/重新启动后使用TimeTrigger自动启动Azure WebJob WebApp
public static void ProcessQueue(
[TimerTrigger("00:02:00")] TimerInfo timerInfo,
[Queue("queue")] CloudQueue queue,
[Table("processing")] CloudTable processingTable,
TextWriter log)
{
// do sth...
}
的TimeTrigger
选项来自Microsoft.Azure.WebJobs.Extensions。
我将WebApp设置为在"always on" mode中运行。
但是,如果我正在重新启动或更改应用程序设置,WebApp可能会在内部进行回收?我认为。
因为在这之后我收到以下错误:
[11/10/2016 08:22:24 > 36d12e: SYS ERR ] WebJob run failed due to: System.Threading.ThreadAbortException: Thread was being aborted. at Kudu.Core.Jobs.BaseJobRunner.RunJobInstance(JobBase job, IJobLogger logger, String runId, String trigger, ITracer tracer, Int32 port) at Kudu.Core.Jobs.TriggeredJobRunner.<>c__DisplayClass10_1.b__0(Object _)
于是,我就设定一个时间表上WebJob,我也试过在目录中粘贴一个cron时间表,但没有任何帮助我出去把重置/回收后的工作“运行”。
更新1
我的EXE文件的内容(Main()
)
JobHostConfiguration config = new JobHostConfiguration();
config.Tracing.ConsoleLevel = TraceLevel.Verbose;
config.Queues.MaxDequeueCount = 10;
config.UseCore();
config.UseTimers();
var host = new JobHost(config);
host.RunAndBlock();
更新2
如果我在Azure的门户网站都手动部署为连续运行的预期(感谢mathewc)。但这是手动步骤;)。我处于DevOps场景中,所有内容都将由Visual Studio团队服务构建,创建和部署,您无法设置任何选项将作业部署为连续作业。
你还可以分享你的exe启动代码,所以我可以看到你是否正确启动WebJobs SDK JobHost? – mathewc
@mathewc:已添加为Update1 – Martin