Триггер времени в C# не запускается

0

Вопрос

Я использую задание CRON TimerTrigger для планирования задачи на 2 дня, но триггер, похоже, не работает. Ниже приведен код, который я пробовал,

public static void StartupJob([TimerTrigger("0 * * * * *", RunOnStartup = true)] TimerInfo timerInfo) //0 * * * * * added CRON job to run for every minute for testing purpose
        {
            Console.WriteLine("Timer job fired!");
        }

local.settings.json

{
    "IsEncrypted": false,
    "Values": {
      "AzureWebJobsStorage": "UseDevelopmentStorage=true",
      "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    }
}

Поскольку приведенный выше код не работал, я добавил следующее в main()

static void Main()
        {
            var config = new JobHostConfiguration();
            config.UseTimers();
            config.Tracing.ConsoleLevel = System.Diagnostics.TraceLevel.Verbose;

            if (config.IsDevelopment)
            {
                config.UseDevelopmentSettings();
            }

            var host = new JobHost(config);
            // The following code ensures that the WebJob will be running continuously
            host.RunAndBlock();
        }

Получена следующая ошибка и показано исправление для установки пакета DocumentFormat, но установка этого пакета не устраняет ошибку имени функции.

enter image description here

Я новичок в C# и не могу понять, в чем здесь проблема. Любая помощь или ссылка на хорошие примеры были бы полезны и оценены по достоинству.

Спасибо.

azure-functions azure-webjobs c# cron
2021-11-14 18:01:13
1

Лучший ответ

0

Я попытался воспроизвести вашу проблему и понял это.

  1. Во-первых, я создал функцию Azure в Visual Studio и выбрал Триггер таймера > Нажмите создать enter image description here

  2. В соответствии с вашим требованием запускать эту функцию запуска таймера каждую минуту, я изменил выражение на [TimerTrigger("0 * * * * *")]

enter image description here

  1. После этого создайте проект и запустите функцию локально. На выходе получается:

enter image description here

  1. Создал приложение функции в Azure (план потребления).
  2. Опубликовал вышеупомянутое приложение-функцию в приложении-функции Azure из Visual studio.
  3. Затем перейдите на портал Azure > Ваше приложение функций >> Функции (в левой области индекса) >>> Нажмите на имя вашей функции (в моем случае это функция 1). enter image description here

После этого перейдите в раздел "Код+интеграция", нажмите "Протестировать/Запустить вашу функцию", и журналы начнут регистрировать выполнение функции, как показано ниже:

enter image description here

Пример 2 (С данным кодом в вопросе):

enter image description here

enter image description here

Проблема в том, что Console.Writeline является статической функцией. Вы можете перенаправить его вывод (stdout) в другое место, но вы не можете отследить, откуда был выполнен этот оператор после того, как он достиг stdout.

Для того чтобы мы могли вести журнал вызовов каждой функции, нам нужно знать, из какой функции она была получена и какому конкретному идентификатору вызова она принадлежит. Вот что такое TraceWriter делает. Оттуда наш механизм регистрации отправляет его в хранилище, чтобы наша панель мониторинга могла его забрать. Мы передаем канал stdout в журналы веб-заданий, но привязать его к данному вызову непросто.

Для получения дополнительной информации выполните следующие действия : https://github.com/Azure/azure-webjobs-sdk/issues/682

Другой способ, который можно использовать, - это настраиваемая структура ведения журнала (например, Serilog) и прямой вывод журнала на консоль.

Для получения дополнительной информации о образцах ведения журнала вы можете перейти по ссылке ниже :

https://docs.microsoft.com/en-us/sandbox/functions-recipes/logging?tabs=csharp

2021-11-16 12:23:17

Если опубликованный ответ помог, вы можете отметить его как ответ, щелкнув галочку. Это может помочь другим членам сообщества.
HariKrishnaRajoli-MT

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................