Веб-вакансии Azure - используйте INameResolver с функцией TimerTrigger

Я пытался настроить задание с помощью простой функции с помощью TimerTrigger.

public class Processor
{
    /// <summary>
    /// Initializes a new instance of the <see cref="Processor"/> class.
    /// </summary>
    public Processor()
    {

    }

    /// <summary>
    /// Process the Leads to Marketo.
    /// </summary>
    [Disable("Processor.Disable")]
    public async Task ProcessMessages([TimerTrigger("%Processor.TimerTrigger%")] TimerInfo timerInfo, TextWriter log)
    {


        // TODO : remove
        await Task.FromResult(0);
    }
}

Мои настройки определены в моем файле app.config:

<add key="Processor.TimerTrigger" value="00:01:00" />
<add key="Processor.Disable" value="false" />

При запуске моего веб-задания я настроил задание для использования INameResolver и timertrigger:

static void Main()
{
    // Configure the job host
    var config = new JobHostConfiguration
    {
        NameResolver = new ConfigNameResolver() // Resolve name from the config file.
    };

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

    host.RunAndBlock();
}

При выполнении строки host.RunAndBlock() возникло исключение:

Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException: метод индексации ошибок «ProcessMessages» ---> System.FormatException: строка не была распознана как допустимый интервал времени.

Я поставил точку останова в классе, реализующем интерфейс INameResolver, но не попал.

Есть ли способ настроить NameResolver с помощью TimerTrigger?

Спасибо.


person Thomas    schedule 01.02.2016    source источник


Ответы (2)


TimerTrigger в настоящее время не поддерживает INameResolver. Пожалуйста, откройте проблему в общедоступном репозитории здесь, и мы добавим это служба поддержки. Другие привязки расширений поддерживают INameResolver. Если это важно для вас, мы можем подготовить предварительный релиз build, чтобы вы могли использовать / проверить перед выходом следующего выпуска.

person mathewc    schedule 01.02.2016
comment
Спасибо, Мэтью, Айв создал новый выпуск github.com/Azure/azure- webjobs-sdk-extensions / issues / 33. Если удастся выпустить пре-релиз, буду рад его протестировать. - person Thomas; 01.02.2016

Подтверждение того, что INameResolver теперь поддерживается в триггерах таймера, с использованием техники из исходного вопроса и решателя, который выглядит следующим образом:

public class ConfigNameResolver : INameResolver
{
    public string Resolve(string name)
    {
        return ConfigurationManager.AppSettings.Get(name);
    }
}
person Josh    schedule 01.06.2017