Azure WebJobs SDK TimerTrigger 函数不 运行
Azure WebJobs SDK TimerTrigger Functions not running
我正在尝试创建一个 Azure WebJob,它 运行 每 x 秒一个函数。我正在学习 Microsoft website and this example of how to use TimerTrigger with WebJobs on Github 上的教程。但是,当我在本地 运行 时,我在 Functions.cs 中的方法似乎不是 运行ning(没有记录和断点未命中)。
Program.cs:
public class Program
{
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
Functions.cs:
public class Functions
{
public static void TimerJob([TimerTrigger("00:00:03", RunOnStartup = true)] TimerInfo timer)
{
Console.WriteLine("Timer job fired!");
}
}
我在调试控制台的唯一输出是:
Hosting environment: Production
Content root path: C:\Users\<blah>\<Project\bin\Debug\net472\
这是我的 nuget 包和版本:
我正在使用 .NET Framework 4.7.2
最后,我弄清楚了为什么我们的定时触发器没有在我们的网络作业中触发。安装以下 nuget packages,
后,我能够在我的 .net framework 4.7.1 .
中使用您的 function.cs
代码让它工作
因此,为了使我们的带有计时器触发器的 webjob 工作,我们需要使用具有以下软件包的 2.X 或 3.X 版本:
Microsoft.Azure.WebJobs.Extensions -版本 3.0.6
Microsoft.Azure.WebJobs.Extensions.Storage - 版本 3.0.1
Microsoft.Extensions.Logging -版本 2.1.0
Microsoft.Extensions.Logging.控制台 -版本 2.1.0
为了参考检查我在我的环境中使用的所有包:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs" version="3.0.14" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Core" version="3.0.14" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Extensions" version="3.0.6" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Extensions.Storage" version="3.0.1" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Host.Storage" version="3.0.14" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.Binder" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.EnvironmentVariables" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.FileExtensions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.Json" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.DependencyInjection" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileProviders.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileProviders.Physical" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileSystemGlobbing" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Hosting" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Hosting.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging.Configuration" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging.Console" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Options" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Options.ConfigurationExtensions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Primitives" version="2.1.0" targetFramework="net472" />
<package id="ncrontab.signed" version="3.3.0" targetFramework="net472" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net472" />
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
<package id="System.ComponentModel.Annotations" version="4.4.0" targetFramework="net472" />
<package id="System.Diagnostics.TraceSource" version="4.3.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.0" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.0" targetFramework="net472" />
<package id="System.Threading.Tasks.Dataflow" version="4.8.0" targetFramework="net472" />
<package id="WindowsAzure.Storage" version="9.3.1" targetFramework="net472" />
这是我的 Program.cs
,我在 b.AddAzureStorageCoreServices();
之后添加了 AddTimers
扩展方法
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;
namespace usetimertrigger
{
class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddTimers();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
}
}
function.cs
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System;
namespace usetimertrigger
{
public class Functions
{
public static void TimerJob([TimerTrigger("00:00:03", RunOnStartup = true)] TimerInfo timer)
{
Console.WriteLine("Ajay timer trigger fired!");
}
}
}
如 MS DOC 中所述,添加了从 Azure 门户>存储帐户>访问密钥复制的我的存储帐户访问密钥
和appsettings.json
应该复制到输出目录到总是复制来配置我们的存储连接字符串,如下所示。
输出:-
添加前b.AddTimers();
添加后b.AddTimers();
参考:
所以线程:
我正在尝试创建一个 Azure WebJob,它 运行 每 x 秒一个函数。我正在学习 Microsoft website and this example of how to use TimerTrigger with WebJobs on Github 上的教程。但是,当我在本地 运行 时,我在 Functions.cs 中的方法似乎不是 运行ning(没有记录和断点未命中)。
Program.cs:
public class Program
{
static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
}
Functions.cs:
public class Functions
{
public static void TimerJob([TimerTrigger("00:00:03", RunOnStartup = true)] TimerInfo timer)
{
Console.WriteLine("Timer job fired!");
}
}
我在调试控制台的唯一输出是:
Hosting environment: Production
Content root path: C:\Users\<blah>\<Project\bin\Debug\net472\
这是我的 nuget 包和版本:
我正在使用 .NET Framework 4.7.2
最后,我弄清楚了为什么我们的定时触发器没有在我们的网络作业中触发。安装以下 nuget packages,
后,我能够在我的 .net framework 4.7.1 .
function.cs
代码让它工作
因此,为了使我们的带有计时器触发器的 webjob 工作,我们需要使用具有以下软件包的 2.X 或 3.X 版本:
Microsoft.Azure.WebJobs.Extensions -版本 3.0.6
Microsoft.Azure.WebJobs.Extensions.Storage - 版本 3.0.1
Microsoft.Extensions.Logging -版本 2.1.0
Microsoft.Extensions.Logging.控制台 -版本 2.1.0
为了参考检查我在我的环境中使用的所有包:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs" version="3.0.14" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Core" version="3.0.14" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Extensions" version="3.0.6" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Extensions.Storage" version="3.0.1" targetFramework="net472" />
<package id="Microsoft.Azure.WebJobs.Host.Storage" version="3.0.14" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.Binder" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.EnvironmentVariables" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.FileExtensions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Configuration.Json" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.DependencyInjection" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileProviders.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileProviders.Physical" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileSystemGlobbing" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Hosting" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Hosting.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging.Configuration" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging.Console" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Options" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Options.ConfigurationExtensions" version="2.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Primitives" version="2.1.0" targetFramework="net472" />
<package id="ncrontab.signed" version="3.3.0" targetFramework="net472" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net472" />
<package id="System.Buffers" version="4.4.0" targetFramework="net472" />
<package id="System.ComponentModel.Annotations" version="4.4.0" targetFramework="net472" />
<package id="System.Diagnostics.TraceSource" version="4.3.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.0" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.0" targetFramework="net472" />
<package id="System.Threading.Tasks.Dataflow" version="4.8.0" targetFramework="net472" />
<package id="WindowsAzure.Storage" version="9.3.1" targetFramework="net472" />
这是我的 Program.cs
,我在 b.AddAzureStorageCoreServices();
AddTimers
扩展方法
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;
namespace usetimertrigger
{
class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddTimers();
});
builder.ConfigureLogging((context, b) =>
{
b.AddConsole();
});
var host = builder.Build();
using (host)
{
host.Run();
}
}
}
}
function.cs
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using System;
namespace usetimertrigger
{
public class Functions
{
public static void TimerJob([TimerTrigger("00:00:03", RunOnStartup = true)] TimerInfo timer)
{
Console.WriteLine("Ajay timer trigger fired!");
}
}
}
如 MS DOC 中所述,添加了从 Azure 门户>存储帐户>访问密钥复制的我的存储帐户访问密钥
和appsettings.json
应该复制到输出目录到总是复制来配置我们的存储连接字符串,如下所示。
输出:-
添加前b.AddTimers();
添加后b.AddTimers();
参考:
所以线程: