C# 使用 Hangfire 与 Owin 和 TopShelf

问题描述 投票:0回答:1

我使用 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
        }
    }
}

我真的不明白问题出在哪里。

c# owin hangfire topshelf
1个回答
0
投票

我不会再使用 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();
© www.soinside.com 2019 - 2024. All rights reserved.