我使用 TopShelf 创建了一个控制台应用程序。现在我需要添加 Hangfire 和 Owin 来激活 Hangfire 仪表板。问题出在我的
IAppBuilder
实例上,它没有任何 UseHangfire
。
我安装了 Hangfire 和 Hangfire.AspNetCore 但没有任何效果。
using Hangfire;
using Hangfire.SqlServer;
using Hangfire.Dashboard;
using Owin;
namespace MyNamespace
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseHangfireDashboard(); // <-- Method not found
}
}
}
我真的不明白问题出在哪里。
我不会再使用 Topshelf,因为 .NET 3.1 提供了一个名为“BackgroundService”的新服务
https://learn.microsoft.com/en-us/dotnet/core/extensions/windows-service?pivots=dotnet-7-0
否则必须有一些在 .NET 6 或 .NET 7 上运行 Topshelf 的文档
你可以用这样的东西创建它(我没有测试过)
using App.WindowsService;
using Microsoft.Extensions.Logging.Configuration;
using Microsoft.Extensions.Logging.EventLog;
using Hangfire;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddWindowsService(options =>
{
options.ServiceName = "My Job Service";
});
builder.Services.AddSingleton<MyJobService>();
builder.Services.AddHostedService<WindowsBackgroundService>();
// Add services to the container.
builder.Services.AddHangfire(config =>
{
config.UseInMemoryStorage();
});
builder.Services.AddHostedService<Worker>();
builder.Services.AddHangfireServer();
var app = builder.Build();
app.UseHangfireDashboard();
app.Run();