bugfix> c# > 投稿

hangfireを正しく設定したと思いますが、何らかの理由でhangfireはSql Serverデータベースにジョブを追加しますが、何も実行されません。私はすべてを試してみましたが、例外もなかったため理解できませんでした。毎週メールを送信するクラスから関数を実行したい。コントローラーコンストラクターに挿入される作業単位DIがあります。 SendEmailsのメソッドを持つクラスにはUnitOfWork DIが必要です。コンソールにメッセージを出力するためのハングファイアを作成できなかったため、ここまでは行きませんでした。どうぞよろしくお願いします。ありがとうございました。私のコードは:

//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);
    }
}

回答 1 件
  • app.UseHangfireServer()を追加することができませんでした。これは初めて追加したもので、データベースエラーの修正中に何らかの形で削除しました。今ではうまく機能しているように見えました。ここでconfigureメソッドで "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();
    
    

    }

あなたの答え