Запланированный Azure WebJob, но NoAutomaticTrigger-Method не используется

Этот вопрос связан с этим: Запуск Azure WebJob без очереди

Мой сценарий: я просто хочу писать файл каждый час в хранилище 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 "работает" все время, но теперь планировщик выдает следующую ошибку - и ничего не происходит: "Невозможно запустить новый запуск, поскольку работа уже запущена".

Текущий результат состоит в том, что файл записывается только один раз. Если я переключу "AlwaysOn" на false, он "работает", но он кажется грязным, потому что без результата "Всегда на работе" "Прервано".

Ответ 1

Задание, помеченное как "по требованию", должно быть завершено. В вашем случае проблема заключается в вызове RunAndBlock в конце. Если вы вызываете этот метод, консольное приложение никогда не останавливается (это значит, что задание "уже запущено" ), потому что RunAndBlock - это в основном цикл while(true).

RunAndBlock следует использовать только для непрерывных заданий.