Cultiv.Hangfire 5.2.0

dotnet add package Cultiv.Hangfire --version 5.2.0
                    
NuGet\Install-Package Cultiv.Hangfire -Version 5.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Cultiv.Hangfire" Version="5.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cultiv.Hangfire" Version="5.2.0" />
                    
Directory.Packages.props
<PackageReference Include="Cultiv.Hangfire" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Cultiv.Hangfire --version 5.2.0
                    
#r "nuget: Cultiv.Hangfire, 5.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Cultiv.Hangfire@5.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Cultiv.Hangfire&version=5.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Cultiv.Hangfire&version=5.2.0
                    
Install as a Cake Tool

Cultiv.Hangfire · GitHub license NuGet version (Cultiv.Hangfire) Twitter

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:

Screenshot of Cultiv.Hangfire installed in Umbraco

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 to 00: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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
Loading failed