Задание, назначенное с помощью Hangfire, не запускается в консольном приложении .NET Core - PullRequest
1 голос
/ 15 июня 2019

Я пытаюсь реализовать запуск метода в моем console application with Hangfire.

Вот так выглядит мой Program class:

internal class Program
{
    private static IServiceProvider Provider { get; set; }

    private static void Main(string[] args)
    {
        Program program = new Program();
        program.ConfigureDI();

        program.InitializeScheduledJob("* * * * *");
    }

    private void ConfigureDI()
    {
        var configuration = GetConfiguration();

        var services = new ServiceCollection();

        services.AddSingleton<IConfiguration>(configuration);

        services.AddScoped<ITestService, TestService>();

        Provider = services.BuildServiceProvider();
    }

    private IConfigurationRoot GetConfiguration()
    {
        var environmentName = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

        var configurationBuilder = new ConfigurationBuilder();
        configurationBuilder.AddJsonFile($"appsettings.{environmentName}.json", true, true);

        return configurationBuilder.Build();
    }

    private void InitializeScheduledJob(string cron)
    {
        var testService = Provider.GetService<ITestService>();
        var configuration = Provider.GetService<IConfiguration>();

        var scheduledJobId = configuration.GetSection("ScheduledJobId");
        var hangfireConnectionString = configuration.GetSection("ConnectionStrings:HangfireConnection");

        GlobalConfiguration.Configuration.UsePostgreSqlStorage(hangfireConnectionString.Value, new PostgreSqlStorageOptions { QueuePollInterval = TimeSpan.FromSeconds(1) });

        using (var server = new BackgroundJobServer())
        {
            RecurringJob.AddOrUpdate(scheduledJobId.Value, () => testService.TestMethodAsync(), cron);
        }
    }
}

Как вы можете видеть, я использую DIв приложении, и я пытаюсь вызвать метод TestMethodAsync в службе TestService, но, несмотря на добавление его в качестве повторяющегося задания, он никогда не вызывается.

В чем может быть проблема?

...