文檔目錄
本節內容:
簡介
Hangfire是一個綜合的後台作業管理器,可以在ABP裡集成它替代默認的後台作業管理器,你可以為Hangfire使用相同的後台作業Api,因此你的代碼不依賴於Hangfire,但是,如果你喜歡你可以直接使用Hangfire的API。
集成
首先, 安裝Abp.HangFire nuget包到你的項目,然後可以為Hangfire安裝任何存儲,非常通用的是Sql Server存儲(查看Hangfire.SqlServer nuget 包),在安裝完這些包後,配置ABP,讓它使用Hangfire,如下所示:
[DependsOn(typeof (AbpHangfireModule))] public class MyProjectWebModule : AbpModule { public override void PreInitialize() { Configuration.BackgroundJobs.UseHangfire(configuration => { configuration.GlobalConfiguration.UseSqlServerStorage("Default"); }); } //... }
我們添加了AbphangfireModule,讓它作為一個依賴,並使用Configuration.BackgroundJobs.Usehangfire方法啟用和配置Hangfire(“Default”是web.config中數據庫連接的名稱)。
Hangfire需要在你的數據庫創建結構的許可,因為它在首次運行時,創建它自己的結果和表。更多信息查看Hangfire文檔。
Hangfire 面板授權
Hangfire可以提供一個面板頁面,實時顯示所有後台作業的狀態,你可以按它自己的文檔描述那樣配置,默認情況下,所有用戶都可以使用這個面板頁面,不需要授權,你可以用定義在Abp.HangFire包裡的AbphangfireAuthorizationFilter類,把它集成到ABP的授權系統裡。配置示例:
app.UseHangfireDashboard("/hangfire", new DashboardOptions { Authorization = new[] { new AbpHangfireAuthorizationFilter() } });
如果用戶已經登錄到應用,就會使用這個進行檢查,如果你需要一個額外的許可,你可以把許可傳入它的構造器:
app.UseHangfireDashboard("/hangfire", new DashboardOptions { Authorization = new[] { new AbpHangfireAuthorizationFilter("MyHangFireDashboardPermissionName") } });
注意:UsehangifreDashboard應該在你的Startup類裡的授權中間件運行後調用(可能是在最後一行)。否則,授權會一直失敗。
kid1412附:英文原文:http://www.aspnetboilerplate.com/Pages/Documents/Hangfire-Integration