2016-11-30 2 views
1

У меня есть приложение консоли Azure WebJob, которое не распознает TimerTrigger, который я установил.Почему моя функция TimerTrigger'd в моем приложении Azure WebJob не обнаружена?

У меня по умолчанию Program.cs генерируется Visual Studio:

class Program 
{ 
    static void Main() 
    { 
    var config = new JobHostConfiguration(); 

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

    var host = new JobHost(); 

    host.RunAndBlock(); 
    } 
} 

я добавил свою новую функцию Functions.cs:

public static void MyFunction([TimerTrigger("0 */2 * * * *", 
              RunOnStartup = true)] 
           TimerInfo timerInfo, 
           TextWriter log) 
{ 
    log.WriteLine("MyFunction started!"); 
} 

(я установил NuGet пакет WebJobs.Extensions, поэтому мой код компилируется нормально.)

Я также добавил эту строку:

config.UseTimers(); 

Main функция, указанная в this answer, но по какой-то причине моя новая функция все еще не срабатывает.

Когда я запустить приложение, я вижу этот вывод:

Found the following functions: 
MyNamespace.Functions.ProcessQueueMessage 
Job host started 

Так что не видит мою новую функцию.

Почему это происходит, и как я могу это исправить?

ответ

5

После сравнения содержимого моего Program.cs с тем, что другие разместили в Интернете (в том числе the TimerTrigger docs), я нашел небольшую разницу.

В функции Main, я изменил:

var host = new JobHost(); 

к:

var host = new JobHost(config); 

, и она работала. Я точно знаю, что раньше этого не менял, так что, видимо, это была ошибка в шаблоне Azure WebJob.