通过控制台应用程序设置作业时如何访问 hangfire 仪表板
How to access hangfire dashboard when jobs are setup via console application
我使用 Hangfire.Core
和 Hangfire.SqlServe
r nuget 包创建了一个 .NET Framework 4.5 应用程序。代码非常简单。
class Program
{
static void Main(string[] args)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("Server=localhost;Database=HangfireDb;User Id=username;Password=password");
BackgroundJob.Enqueue(() => ProcessData("process this"));
using (var server = new BackgroundJobServer())
{
Console.WriteLine("Hangfire Server started. Press any key to exit...");
Console.ReadKey();
}
}
public static void ProcessData(string data)
{
Console.WriteLine(data);
}
}
在 运行 这个程序之后,我看到在数据库中创建了 table 模式,并且 [Job]
table 被填充了这个方法的条目。但是,我不知道如何访问 hangfire 仪表板来查看作业本身。我尝试了 http://localhost/hangfire 但报告了 404 错误。经过一番谷歌搜索后,我在项目中添加了以下 Startup.cs
class。
using Hangfire;
using Microsoft.Owin;
using Owin;
using System.Collections.Generic;
[assembly: OwinStartup(typeof(HangfireSample.Startup))]
namespace HangfireSample
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseHangfireServer();
app.UseHangfireDashboard("/hangfire");
}
}
}
我在 Configuration
方法中设置了一个断点,但它没有被击中,我仍然无法访问 hangfire 仪表板。有什么建议我在这里做错了吗?
您创建了两种不同的 classes,一种用于 HangfireSample
(仪表板需要),另一种用于 Main
(控制台)。我看到的问题是您没有在 Main
class.
中的任何地方调用 HangfireSample
我创建了一个示例 HangfireProject(.Net Framework with Hangfire 1.7.11/MS SQL)并成功启动了仪表板并运行 使用了 WebApp.Start<Dashboard>(options)
。这一行实际上启动了你的 Hangfire 仪表板。
Dashboard.cs
using Hangfire;
using HangfireProject;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(Dashboard))]
namespace HangfireProject
{
public class Dashboard
{
public void Configuration(IAppBuilder app)
{
//app.UseHangfireServer();
app.UseHangfireDashboard();
}
}
}
主要Class
using Hangfire;
using Hangfire.SqlServer;
using Microsoft.Owin.Hosting;
using System;
using System.Collections.Generic;
namespace HangfireProject
{
class Program
{
static void Main(string[] args)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("Server=localhost;Database=HangfireDB;User Id=localAccount;Password=password;", new SqlServerStorageOptions
{
CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero,
UseRecommendedIsolationLevel = true,
DisableGlobalLocks = true
});
StartOptions options = new StartOptions();
options.Urls.Add($"http://localhost:9095");
options.Urls.Add($"http://127.0.0.1:9095");
WebApp.Start<Dashboard>(options);
using (var server = new BackgroundJobServer())
{
System.Console.WriteLine("Hangfire Server started. Press any key to exit...");
System.Console.ReadKey();
}
}
}
}
为了能够 运行 WebApp.Start<>
,您还需要安装 Microsoft.Owin.Host.HttpListener
Nuget 包。确保您运行使用管理员权限来管理这个项目,因为它需要访问权限才能创建 URL
我使用 Hangfire.Core
和 Hangfire.SqlServe
r nuget 包创建了一个 .NET Framework 4.5 应用程序。代码非常简单。
class Program
{
static void Main(string[] args)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("Server=localhost;Database=HangfireDb;User Id=username;Password=password");
BackgroundJob.Enqueue(() => ProcessData("process this"));
using (var server = new BackgroundJobServer())
{
Console.WriteLine("Hangfire Server started. Press any key to exit...");
Console.ReadKey();
}
}
public static void ProcessData(string data)
{
Console.WriteLine(data);
}
}
在 运行 这个程序之后,我看到在数据库中创建了 table 模式,并且 [Job]
table 被填充了这个方法的条目。但是,我不知道如何访问 hangfire 仪表板来查看作业本身。我尝试了 http://localhost/hangfire 但报告了 404 错误。经过一番谷歌搜索后,我在项目中添加了以下 Startup.cs
class。
using Hangfire;
using Microsoft.Owin;
using Owin;
using System.Collections.Generic;
[assembly: OwinStartup(typeof(HangfireSample.Startup))]
namespace HangfireSample
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseHangfireServer();
app.UseHangfireDashboard("/hangfire");
}
}
}
我在 Configuration
方法中设置了一个断点,但它没有被击中,我仍然无法访问 hangfire 仪表板。有什么建议我在这里做错了吗?
您创建了两种不同的 classes,一种用于 HangfireSample
(仪表板需要),另一种用于 Main
(控制台)。我看到的问题是您没有在 Main
class.
HangfireSample
我创建了一个示例 HangfireProject(.Net Framework with Hangfire 1.7.11/MS SQL)并成功启动了仪表板并运行 使用了 WebApp.Start<Dashboard>(options)
。这一行实际上启动了你的 Hangfire 仪表板。
Dashboard.cs
using Hangfire;
using HangfireProject;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(Dashboard))]
namespace HangfireProject
{
public class Dashboard
{
public void Configuration(IAppBuilder app)
{
//app.UseHangfireServer();
app.UseHangfireDashboard();
}
}
}
主要Class
using Hangfire;
using Hangfire.SqlServer;
using Microsoft.Owin.Hosting;
using System;
using System.Collections.Generic;
namespace HangfireProject
{
class Program
{
static void Main(string[] args)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("Server=localhost;Database=HangfireDB;User Id=localAccount;Password=password;", new SqlServerStorageOptions
{
CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
QueuePollInterval = TimeSpan.Zero,
UseRecommendedIsolationLevel = true,
DisableGlobalLocks = true
});
StartOptions options = new StartOptions();
options.Urls.Add($"http://localhost:9095");
options.Urls.Add($"http://127.0.0.1:9095");
WebApp.Start<Dashboard>(options);
using (var server = new BackgroundJobServer())
{
System.Console.WriteLine("Hangfire Server started. Press any key to exit...");
System.Console.ReadKey();
}
}
}
}
为了能够 运行 WebApp.Start<>
,您还需要安装 Microsoft.Owin.Host.HttpListener
Nuget 包。确保您运行使用管理员权限来管理这个项目,因为它需要访问权限才能创建 URL