Kha*_*san 2 c# hangfire .net-core worker-service
我正在使用 Hangfire 来安排我的工作人员服务中的作业,并希望使用 Hangfire 仪表板。但似乎没有办法配置这个。所有文档都使用 Startup 类,但我的工作服务中没有任何启动。另外,.Net 5 不支持 OWIN NuGet 包。这是我尝试过的,
var hostBuilder = CreateHostBuilder(args)
.Build();
var services = hostBuilder.Services;
var applicationBuilder = new ApplicationBuilder(services);
applicationBuilder.UseRouting();
applicationBuilder.UseHangfireDashboard("/hangfire");
applicationBuilder.UseEndpoints(endpoints =>
{
endpoints.MapHangfireDashboard();
});
hostBuilder.Run();
Run Code Online (Sandbox Code Playgroud)
我已经像这样配置了hangfire,
services.AddHangfire(configuration => configuration
.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseSqlServerStorage("connection string",
{
CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero,
UseRecommendedIsolationLevel = true,
DisableGlobalLocks = true
}));
// Add the processing server as IHostedService
services.AddHangfireServer();
Run Code Online (Sandbox Code Playgroud)
请注意,在当前的实现中,我可以通过hangfire 来安排和执行作业,我现在需要的只是配置hangfire 仪表板。
使用以下命令Program.cs配置 Hangfire 仪表板和您的工作人员服务:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args)
.Build()
.Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(builder =>
{
builder.Configure(app =>
{
app.UseRouting();
app.UseHangfireDashboard();
app.UseEndpoints(endpoints =>
{
endpoints.MapHangfireDashboard();
});
});
})
.ConfigureServices((hostContext, services) =>
{
services.AddHangfire(conf => conf.UseSqlServerStorage("connection string"));
services.AddHangfireServer();
// your worker service
services.AddHostedService<Worker>();
});
}
Run Code Online (Sandbox Code Playgroud)
Hangfire 仪表板将于 提供http://localhost:5000/hangfire。