计划的 .NET WebJob V3 示例

nmi*_*026 6 c# asp.net azure-webjobs azure-webjobssdk azure-webjobs-triggered

我已将 .NET(不是 .NET Core)WebJob 从 V2(工作正常)升级到 V3。我无法让它运行。我只是想让网络作业调用我根据这个 CRON 时间表编写的函数:“0 0 8,10,12,14,16,18,20 * * *”。它运行的网站也是 .NET,而不是 .NET Core。

我该怎么做呢?我只想要一个简单的工作 .NET 代码示例。我看到过这个问题New Azure WebJob Project - JobHostConfiguration/RunAndBlock在NuGet更新后丢失,这个例子https://github.com/Azure/azure-webjobs-sdk/blob/00686a5ae3b31ca1c70b477c1ca828e4aa754340/sample/SampleHost/Program.cs和这个文档https://learn.microsoft.com/en-us/azure/app-service/webjobs-sdk-how-to#triggers但没有一个有帮助。

Geo*_*hen 8

实际上.Net webjob或.Net Core webjob的使用几乎相同,导致3.0 sdk针对.NET标准2.0。我使用Microsoft.Azure.WebJobs -version 3.0.4和进行测试Microsoft.Azure.WebJobs.Extensions -version 3.0.1,我认为您的 TimerTrigger 不起作用,因为您丢失了AddTimers扩展方法的调用。您可以在这里找到描述:绑定类型

我使用的其他包:

Microsoft.Extensions.Logging -version 2.2.0
Microsoft.Extensions.Logging.Console -version 2.2.0
Run Code Online (Sandbox Code Playgroud)

这是我的main方法:

using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Hosting;
namespace ConsoleApp20
{
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();
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

这是我的Functions.cs

public static void Run([TimerTrigger("0 0 8,10,12,14,16,18,20 * * *")]TimerInfo myTimer, ILogger log)
    {

        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }
Run Code Online (Sandbox Code Playgroud)

并使用appsettings.json(不要忘记设置为Copy to Output DirectoryCopy always来配置存储连接字符串。

结果如下:

在此输入图像描述

  • 完美的答案。WebJobs 的文档以及 V3 中 .NET 和 .NET Core(以及 .NET Standard)之间的模糊界限是如此令人困惑和奇怪。这将帮助每个人快速启动并运行。谢谢! (5认同)