预定的.NET WebJob V3示例

时间:2019-07-30 05:25:32

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

我已经将我的.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,但是都没有帮助。

2 个答案:

答案 0 :(得分:2)

.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)来配置存储连接字符串。

这是结果:

enter image description here

答案 1 :(得分:0)

  

计划的.NET WebJob V3示例

不,这不可能。

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

这里是SO thread关于.net核心的Webjob 3.x的一些设置。