Cultiv.Hangfire
5.2.0
dotnet add package Cultiv.Hangfire --version 5.2.0
NuGet\Install-Package Cultiv.Hangfire -Version 5.2.0
<PackageReference Include="Cultiv.Hangfire" Version="5.2.0" />
<PackageVersion Include="Cultiv.Hangfire" Version="5.2.0" />
<PackageReference Include="Cultiv.Hangfire" />
paket add Cultiv.Hangfire --version 5.2.0
#r "nuget: Cultiv.Hangfire, 5.2.0"
#:package Cultiv.Hangfire@5.2.0
#addin nuget:?package=Cultiv.Hangfire&version=5.2.0
#tool nuget:?package=Cultiv.Hangfire&version=5.2.0
Cultiv.Hangfire ·

Hangfire dashboard for Umbraco
This installs Hangfire and a dashboard in Umbraco, the dashboard is secured and is only available for users with access to the Settings section of Umbraco.
After installing this, you can add a Composer to start running scheduled tasks, for example:
using System.Threading;
using Hangfire;
using Hangfire.Console;
using Hangfire.Server;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.DependencyInjection;
namespace MyNamespace
{
public class Composer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
RecurringJob.AddOrUpdate(() => DoIt(null), Cron.Hourly());
}
public void DoIt(PerformContext context)
{
var progressBar = context.WriteProgressBar();
var items = new int[10]{ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 };
foreach (var item in items.WithProgress(progressBar, items.Length))
{
context.WriteLine($"Number: {item}");
Thread.Sleep(1000);
}
}
}
}
In the Umbraco backoffice it will look a little something like this:

Configuration
Custom Queue Names
By default, Hangfire processes jobs from the "default" queue. For scenarios where multiple applications or sites share the same Hangfire database, you can configure specific queues for each server to process:
{
"Hangfire": {
"Server": {
"QueueNames": ["app1", "shared", "default"]
}
}
}
Each Hangfire server will only process jobs from its configured queues. Queues are processed in the order specified, so jobs in earlier queues have higher priority.
To enqueue jobs to a specific queue:
BackgroundJob.Enqueue(() => DoWork(), new EnqueuedState("app1"));
If no queue names are configured, the server will process the "default" queue.
SQL Server Storage Options
Configure Hangfire's SQL Server storage behavior to optimize performance and reduce database load:
{
"Hangfire": {
"StorageOptions": {
"QueuePollInterval": "00:00:15",
"PrepareSchemaIfNecessary": true,
"EnableHeavyMigrations": true,
"CommandBatchMaxTimeout": "00:05:00",
"SlidingInvisibilityTimeout": "00:05:00",
"UseRecommendedIsolationLevel": true,
"DisableGlobalLocks": true
}
}
}
Configuration options:
- QueuePollInterval: Controls how often Hangfire polls the database for new jobs. Default is
00:00:00(immediate polling). Setting to00:00:15(15 seconds) significantly reduces database load in high-traffic scenarios while maintaining reasonable job pickup times. - PrepareSchemaIfNecessary: Automatically creates database schema if needed (default:
true) - EnableHeavyMigrations: Allows Hangfire to perform database migrations (default:
true) - CommandBatchMaxTimeout: Maximum timeout for batch commands (default: 5 minutes)
- SlidingInvisibilityTimeout: Time before a processing job is considered abandoned (default: 5 minutes)
- UseRecommendedIsolationLevel: Uses recommended SQL isolation level (default:
true) - DisableGlobalLocks: Disables global locks for better performance (default:
true)
Disable Hangfire Server
If you only want to access the Hangfire dashboard without running background job processing on a particular server:
{
"Hangfire": {
"Server": {
"Disabled": true
}
}
}
Standalone Section Mode
By default, the Hangfire dashboard appears as a dashboard within Umbraco's Settings section. You can optionally configure it as a standalone section with its own top-level menu item and separate permissions:
{
"Hangfire": {
"UseStandaloneSection": true
}
}
Key differences:
- Dashboard mode (default): Dashboard appears in Settings section, inherits Settings section permissions
- Standalone section mode: Full-width view (no tree sidebar), separate "Hangfire" section in User Groups with granular permission control
When enabled, administrators can grant users access to the Hangfire section independently from other sections by editing User Group permissions.
Notes for specific versions this package and Umbraco
- Version 5+ of this package works with Umbraco versions 17 and above
- Version 4+ of this package works with Umbraco versions 14 through 16
- Version 3 and below works with Umbraco 9 through 13
Umbraco 13
- You might need to add the following above your
IComposers that schedule the jobs:[ComposeAfter(typeof(HangfireComposer))](see this issue)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Hangfire (>= 1.8.22)
- Hangfire.Console (>= 1.4.3)
- Hangfire.Storage.SQLite (>= 0.4.2)
- Umbraco.Cms (>= 17.0.0)
- Umbraco.Cms.DevelopmentMode.Backoffice (>= 17.0.0)
- Umbraco.Cms.Persistence.SqlServer (>= 17.0.0)
- Umbraco.Cms.Web.Website (>= 17.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Cultiv.Hangfire:
| Package | Downloads |
|---|---|
|
uSync.Complete.Hangfire
Hangfire helpers for uSync.Complete |
|
|
uSync.Hangfire
Hangfire helpers for uSync |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 5.2.0 | 3,511 | 12/7/2025 |
| 5.1.0 | 258 | 12/7/2025 |
| 5.0.0 | 472 | 11/28/2025 |
| 4.1.3 | 14,335 | 2/20/2025 |
| 4.1.2 | 369 | 2/20/2025 |
| 4.1.1 | 349 | 2/20/2025 |
| 4.1.0 | 337 | 2/20/2025 |
| 4.0.1 | 4,596 | 5/30/2024 |
| 4.0.0 | 489 | 5/8/2024 |
| 4.0.0-beta2 | 170 | 5/2/2024 |
| 4.0.0-beta1 | 221 | 3/7/2024 |
| 3.1.2 | 129,972 | 9/18/2023 |
| 3.1.1 | 360 | 9/18/2023 |
| 3.1.0 | 322 | 9/18/2023 |
| 3.0.0 | 4,327 | 8/21/2023 |
| 2.3.0 | 39,427 | 11/9/2022 |
| 2.2.1 | 2,403 | 11/3/2022 |
| 2.2.0 | 858 | 11/2/2022 |
| 2.2.0-rc001 | 324 | 11/2/2022 |
| 2.1.0 | 4,173 | 7/29/2022 |