Hangfire在特定时间ASP MVC重复出现的工作

时间:2017-11-10 12:09:45

标签: asp.net asp.net-mvc asp.net-core hangfire

我最近使用hangfire来处理冗长的工作,使我能够在ASP MVC Core应用程序中更有效地返回API调用。

我通过在startup.cs中添加以下内容来表达这一点

public class Startup
{

    public IConfigurationRoot Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        services.AddCors(options => options.AddPolicy("AllowAll", p => p.AllowAnyOrigin()));
        services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("DefaultConnection")));
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        app.UseCors("AllowAll");

        app.UseMvc();

        app.UseHangfireDashboard();
        app.UseHangfireServer();     
    }

然后在控制器上的操作中调用它

  using (new BackgroundJobServer())
                    {
                        formData.DateCreated = DateTime.Now;
                        formData.Source = "Web";
                        formData.StatusItem =  _context.Status.FirstOrDefault(x => x.Default == true);

                        _context.Lead.Add(formData);
                        _context.SaveChanges();
                    }

现在我需要每天凌晨1点发送一封电子邮件,其中包含数据库中记录的状态。

我从以下角度对实施方式略有不满:

- 我在哪里实施后台工作? - 我把呼叫放在一个方法中,如果是这样的话怎么称呼/ - 我找不到BackgroundJob.AddOrUpdate,我理解它用于重复任务 - schedule方法采用timepan对象,但所有示例都使用CRON。

我拥有创建电子邮件的所有代码,我只需要帮助安排它

提前感谢您的帮助。

0 个答案:

没有答案