Azure WebJobs useTimers 方法在 .net core 2.0 中不可用

Azure WebJobs useTimers method not available in .net core 2.0

我在 .net core 2 控制台应用程序中使用 Microsoft.azure.webjobs (3.0.0-beta1-10941)。目的是创建一个 azure web 作业,

        var config = new JobHostConfiguration();

        if (config.IsDevelopment)
        {
            config.UseDevelopmentSettings();
        }

        config.UseTimers();

        var host = new JobHost(config);
        host.RunAndBlock();

config.UseTimer() 应该是 Microsoft.Azure.WebHost.Host 的引用,但它需要 2.1.0.0。如果我通过删除的 beta 版本 3.0.0-beta1-10941 添加它,那么 host.runandblock() 在 WindowsAzure.Storage 错误部署安装 edm、数据或 data.services.

时失败

我安装了依赖项,但仍然没有成功

我已将 windowsAzure.Storage 降级到低于 9 但同样的问题。

关于如何在 .net core 2.0 中解决 config.UseTimes() 的任何想法?

谢谢

Any ideas how to resolved config.UseTimes() in .net core 2.0?

在您的情况下,您可以使用 Microsoft.Azure.WebJobs.Extensions 版本 3.0.0-beta4。 我也为它做了一个演示。以下是详细步骤。

1.Create net core 2.0 控制台应用程序。

2.Add Program.cs 文件中的以下代码。

var config = new JobHostConfiguration();

if (config.IsDevelopment)
{
     config.UseDevelopmentSettings();
}
config.UseTimers();
config.DashboardConnectionString ="storage connectionstring";
config.StorageConnectionString = "storage connectionstring";
var host = new JobHost(config);
host.RunAndBlock();

3。将 Functions.cs 文件添加到项目中。

 public class Functions
 {
      public static void CronJob([TimerTrigger("0 */1 * * * *")] TimerInfo timer)
        {
            Console.WriteLine("Cron job fired!");
        }
  }

4。在我这边测试一下。

勾选documentation。有 2.x 和 3.x 的解决方案。

对于3.x可以使用“b.AddTimers();”示例:

static async Task Main()
{
    var builder = new HostBuilder();
    builder.UseEnvironment(EnvironmentName.Development);

    builder.ConfigureLogging((context, b) =>
    {
        b.AddConsole();
    });
    builder.ConfigureWebJobs(b =>
    {
        b.AddAzureStorageCoreServices(); 
        b.AddAzureStorage();
        b.AddTimers();
    });
    var host = builder.Build();
    using (host)
    {
        await host.RunAsync();
    }
}

时间触发方法:(需要在static中class)

   public  static  class TimeTrigger
    {
        // Runs once every 10 seconds
        public static void TimerJob([TimerTrigger("00:00:10")] TimerInfo timer)
        {
            Console.WriteLine("Timer job fired!");
        }

    }