AspNet MVC中使用Hangfire執行定時任務


 Hangfire在Aspnet中執行定時任務:

第一步:

  NuGet中加入Hangfire包

 

第二步:

  添加Owin的自啟動

 

 

第三步、Hangfire的后台控制儀表盤默認情況下只能本地訪問,外網訪問需實現IDashboardAuthorizationFilter接口,實現方式

/// <summary>
    /// Hangfire儀表盤配置授權¶
    /// </summary>
    public class MyDashboardAuthorizationFilter : IDashboardAuthorizationFilter
    {
        public bool Authorize([NotNull] DashboardContext context)
        {
            return HttpContext.Current.User.Identity.IsAuthenticated;
        }
    }

 

第四步、在Startup.cs里面配置Hangfire

public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            //使用sqlserver持久化
            GlobalConfiguration.Configuration
                 .UseSqlServerStorage("DefaultConnection");

           //控制儀表盤的訪問路徑和授權配置
            app.UseHangfireDashboard("/hangfire", new DashboardOptions
            {
                Authorization = new[] { new MyDashboardAuthorizationFilter() }
            });

       //指定輪詢調度的間隔,根據實際情況設置
            var options = new BackgroundJobServerOptions
            {
                SchedulePollingInterval = TimeSpan.FromMinutes(10)
            };
            app.UseHangfireServer(options);

            /*每天凌晨2點運行任務,Cron參數使用的是UTC時間和北京時間有區別,需要轉換下*/
            RecurringJob.AddOrUpdate(
                () => 執行的任務
                , Cron.Daily(18, 0));
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM