【问题标题】:Scheduled .NET WebJob V3 example计划的 .NET WebJob V3 示例
【发布时间】:2019-12-07 10:35:18
【问题描述】:

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

我该怎么做?我只想要一个简单的.NET 代码示例。我已经看过这个问题New Azure WebJob Project - JobHostConfiguration/RunAndBlock missing after NuGet updates 和这个例子https://github.com/Azure/azure-webjobs-sdk/blob/00686a5ae3b31ca1c70b477c1ca828e4aa754340/sample/SampleHost/Program.cs 和这个文档https://docs.microsoft.com/en-us/azure/app-service/webjobs-sdk-how-to#triggers,但这些都没有帮助。

【问题讨论】:

    标签: c# asp.net azure-webjobs azure-webjobssdk azure-webjobs-triggered


    【解决方案1】:

    其实 .Net webjob 或 .Net Core webjob 的使用几乎是一样的,因为 3.0 sdk 的目标是 .NET standard 2.0。我用Microsoft.Azure.WebJobs -version 3.0.4Microsoft.Azure.WebJobs.Extensions -version 3.0.1 测试,我认为你的TimerTrigger 不起作用,因为你失去了调用AddTimers 扩展方法。你可以在这里找到描述:Binding types

    我使用的其他包:

    Microsoft.Extensions.Logging -version 2.2.0
    Microsoft.Extensions.Logging.Console -version 2.2.0
    

    这是我的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();
            }
        }
    }
    }
    

    这是我的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}");
        }
    

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

    结果如下:

    【讨论】:

    • 完美答案。 WebJobs 的文档以及 V3 中 .NET 和 .NET Core(以及 .NET Standard)之间的模糊界限是如此令人困惑和奇怪。这将帮助每个人快速启动和运行。谢谢!
    • 只是出于兴趣,您是否也在输出中收到此警告:warn: Host.Startup[0] Warning: Only got partial types from assembly: Microsoft.Azure.WebJobs.Extensions.Storage, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 我在 GitHub 上看到这是一个未解决的问题:github.com/Azure/azure-webjobs-sdk/issues/2060
    • 不,我没有遇到这个问题。
    【解决方案2】:

    预定的 .NET WebJob V3 示例

    不,这是不可能的。

    WebJob 3.x 仅支持 .NET Core。 这是article

    这里有一个SO thread,关于Webjob 3.x 为.net core 做一些设置。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2016-12-07
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多