儀表盤就是hangfire的網頁界面,有要執行的任務、執行情況、報錯等后台的敏感信息。
調用儀表盤的方法非常簡單,在Starup文件中如下代碼:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { //.. app.UseHangfireDashboard(); //.. }
在瀏覽器中輸入' 你的地址/hangfire '即可訪問。
為了安全儀表板只能本地訪問,但是我們可以通過實現自己的IDashboardAuthorizationFilter接口來實現身份驗證的訪問,如下:
public class MyAuthorizationFilter : IDashboardAuthorizationFilter { public bool Authorize(DashboardContext context) { var httpContext = context.GetHttpContext(); // 允許所有經過身份驗證的用戶查看儀表板(存在潛在危險)。 return httpContext.User.Identity.IsAuthenticated; } }
或者通過使用 hangfire.dashboard.authorization 來快捷實現。
因為儀表盤中存在刪除任務等關鍵操作,默認是關閉的,可以通過設置 IsReadOnlyFunc屬性的 Dashboardoption來設置,如下:
app.UseHangfireDashboard("/hangfire", new DashboardOptions { IsReadOnlyFunc = (DashboardContext context) => true });
默認情況下,UseHangfireDashboard方法將儀表板映射到/hangfire路徑,我們可以自己修改訪問路徑:
//映射到/jobs路徑 app.UseHangfireDashboard("/jobs");
儀表盤的右上角存在一個返回站點的鏈接,我們可以對其進行更改:
// 更改返回站點的鏈接地址 var options = new DashboardOptions { AppPath = "http://your-app.net" }; // 使“返回站點”鏈接適用於子文件夾應用程序 var options = new DashboardOptions { AppPath = VirtualPathUtility.ToAbsolute("~") }; app.UseHangfireDashboard("/hangfire", options);
儀表盤不只是有一個,還可以存在多個,映射顯示不同存儲介質的存儲信息:
var storage1 = new SqlServerStorage("Connection1"); var storage2 = new SqlServerStorage("Connection2"); app.UseHangfireDashboard("/hangfire1", new DashboardOptions(), storage1); app.UseHangfireDashboard("/hangfire2", new DashboardOptions(), storage2);
