【问题标题】:Hangfire not working in asp.net coreHangfire 在 asp.net 核心中不起作用
【发布时间】:2019-10-24 04:43:10
【问题描述】:

我相信,我确实正确设置了hangfire,但由于某种原因,hangfire 将作业添加到Sql Server 数据库但没有执行任何操作。我尝试了一切,但我无法理解,因为也不例外。我想从每周发送电子邮件的课程中运行一个功能。我有注入控制器构造器的工作单元 DI。将具有 SendEmails 方法的类需要 UnitOfWork DI,我没有走那么远,因为我无法让 hangfire 在控制台上打印消息。请您的帮助表示赞赏。谢谢你。我的代码是:

//Startup.cs ConfigureServices Method 

 services.AddHangfire(x => x.UseSqlServerStorage("Connection"));

//Configure method 


            app.UseHangfireDashboard();
            app.UseFileServer();
// Controller 
 [Route("api/Hello")]
public class HelloController : Controller
{
    [HttpGet]
    public IActionResult Hello()
    {
        RecurringJob.AddOrUpdate(() => Print(),Cron.MinuteInterval(1));
        return Ok();
    }
    public void Print()
    {

        Console.BackgroundColor =ConsoleColor.Red;
        Console.WriteLine(DateTime.Now);
    }

}

【问题讨论】:

  • 我上传了仪表板的屏幕截图,它只显示 Next execution Last execution N/A 对于所有作业,但没有执行任何操作

标签: c# asp.net-core hangfire


【解决方案1】:

我错过了添加 app.UseHangfireServer() 我第一次添加了这个然后不知何故我在修复数据库错误时删除了它。它现在似乎工作正常。我只是想知道在这里的配置方法中使用“IUnitOfWork unitOfWork”是否可以。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IUnitOfWork unitOfWork)
{
    app.UseHangfireDashboard();
    app.UseHangfireServer();

    RecurringJob.AddOrUpdate(() => new Job(unitOfWork).Print(), Cron.MinuteInterval(1));

    app.UseFileServer();
}

【讨论】:

  • “IApplicationBuilder”不包含“UseHangfireDashboard”的定义,最佳扩展方法重载“AppBuilderExtensions.UseHangfireDashboard(IAppBuilder)”需要“IAppBuilder”类型的接收器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
相关资源
最近更新 更多