这个问题与此问题有关:Running Azure WebJob without queue
我的场景:我只想每小时将一个文件写入blob存储,并且不需要任何队列系统。从前一个问题我得到了这个代码 - 它第一次被触发时工作正常:
[NoAutomaticTrigger]
public static void DoWork([Blob("container/foobar.txt")] TextWriter writer)
{
writer.Write("Hello World " + DateTime.Now.ToShortTimeString())"
}
static void Main()
{
JobHost host = new JobHost();
host.Call(typeof(Program).GetMethod("DoWork"));
host.RunAndBlock();
}
网站正在运行" AlwaysOn = true"而webjob是" Running"所有的时间,但现在调度程序抛出以下错误 - 没有任何反应: "由于作业已在运行,因此无法启动新的运行。"
目前的结果是文件只写了一次。如果我切换" AlwaysOn"假它"工作",但它似乎很脏,因为没有总是在工作结果是" Aborted"。
答案 0 :(得分:17)
标记为“按需”的作业必须完成。在您的情况下,问题是最后的RunAndBlock
调用。如果您调用该方法,控制台应用程序永远不会停止(这就是作业“已经在运行”的原因),因为RunAndBlock
基本上是while(true)
循环。
RunAndBlock
只能用于连续工作。