Обновление:
Пожалуйста, перейдите в журнал веб-заданий azure, и вы увидите, что он на самом деле работает в соответствии с параметром timerTrigger, определенным в SDK (даже если Расписание отсутствует, а файл settings.job пуст,это не имеет значения):
Короче говоря, при использовании webjob sdk 3.x вы можете использовать атрибут TimerTrigger
для запуска функции какза время, которое вы определили.Не используя SDK для веб-заданий (например, используйте файл .zip или опубликуйте консольный проект из Visual Studio), вы можете использовать setting.job для заданного таймера вместо атрибута TimerTrigger
.
1.При использовании веб-заданийSDK 3.x для запуска по таймеру, вы должны добавить следующую строку кода: config.AddTimers();
.
Вот мой код с использованием webjobs SDK 3.x (это консольный проект .net core 2.2, созданный в visual studio):
Пакеты с последней версией: Microsoft.Azure.WebJobs
/ Microsoft.Azure.WebJobs.Extensions
/ Microsoft.Extensions.Logging.Console
Код в Program.cs:
class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureWebJobs(config =>
{
config.AddTimers();
config.AddAzureStorageCoreServices();
})
.ConfigureLogging((context, b) =>
{
b.AddConsole();
}
)
.Build();
builder.Run();
}
}
Затем создайте новыйфайл, такой как SayHelloWebJob.cs, и код в нем:
public class SayHelloWebJob
{
public void ProcessCollateFiles([TimerTrigger("0 */1 * * * *", RunOnStartup = false)]TimerInfo timerInfo,TextWriter writer)
{
writer.WriteLine("hi, it is a testing running");
Console.WriteLine("test");
}
}
Обратите внимание, что в файле appsettings.json добавьте строку подключения к хранилищу, как показано ниже:
{
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"
}
Затем запуститеВ проекте вы можете увидеть, что функция запускается за 1 минуту:
2.Для настройки.job, например.если вы просто создаете консольный проект и не используете webjobs sdk.Поскольку вы не используете webjobs sdk, вы не можете использовать атрибут timerTrigger.В этот момент вы можете включить файл settings.job (в его свойстве установите «Копировать в выходной каталог» как «копировать, если новее») в этот проект и настроить запланированный таймер, как вы делали в своем посте.После публикации в качестве веб-задания (в Visual Studio при публикации выберите «Режим выполнения веб-работы» как «запуск по требованию»), он может запускаться согласно расписанию, заданному вами в settings.job.