rss feed Release Notes

Hangfire.Throttling 1.4.1

Maintenance release that brings source link support with embedded sources for easier debugging, signed NuGet packages and their assemblies with our code-signing certificate and more secure CI pipeline for the project.

Continue Reading →

Hangfire.Pro.Redis 3.0.7

Maintenance release with better Redis Cluster connectivity in corner cases, source link support with embedded sources, signed NuGet packages and their assemblies with our code-signing certificate and more secure CI pipeline.

Continue Reading →

Hangfire.Pro 2.3.5

Maintenance release with hidden action buttons in a read-only dashboard change backported from version 3.0.3.

Continue Reading →

Hangfire.Pro 3.0.3

Maintenance release with hidden action buttons in a read-only dashboard and signed NuGet packages, all the assemblies and executable files with a company-owned code signing certificate.

Continue Reading →

Hangfire 1.8.10

Patch release with fixed regression in Hangfire.AspNetCore 1.8.9, bumped dependencies and signed NuGet packages and all the assemblies with a company code signing certificate using an awesome SignPath tool.

Continue Reading →

Hangfire 1.8.9

Minor release with fixed possible NullReferenceException on the Deleted Jobs page, and improved debugging experience through the added source link support with embedded symbols that reference source files in the GitHub repository.

Continue Reading →

Hangfire.Pro 3.0.2 & 2.3.4

Patch releases with important fixes for nested batches and enabled source link support with fully embedded sources to simplify the debugging experience.

Continue Reading →

Hangfire.Pro.Redis 3.0.4

Maintenance release that fixes a problem with displaying Scheduled Jobs page in the Dashboard UI for background jobs with an explicit queue specified.

Continue Reading →

Hangfire 1.8.7

Maintenance release that brings numerous minor fixes and improvements for the different parts of Hangfire.

Continue Reading →

Hangfire.Pro 3.0.1 & 2.3.3

Maintenance releases with fixed regressions from 3.0.0 and more consistent state transition logic when empty batches are used.

Continue Reading →

Hangfire.Pro 3.0.0

This release uses new features of Hangfire 1.8 to make batches even better. It supports new storage methods to have fewer storage roundtrips, allows explicit queues for batch continuations, adds new widgets to the Job Details page to simplify the navigation between jobs and those batches, and supports a stricter Content Security Policy for Dashboard UI.

Continue Reading →

Hangfire 1.8.6

This patch release has several unrelated changes, mainly to polish things and fix some minor problems. Please see the details below.

Continue Reading →

Hangfire.Pro.Redis 3.0.3 & 2.8.22

Patch release that fixes a corner-case related to setting a null value to job parameters, adds static analysis back and a fixes a few other issues.

Continue Reading →

Hangfire 1.8.5

Maintenance release that allows specifying a favicon for the Dashboard UI, fixes regression for disabled recurring jobs, allows to serialize the AutomaticRetryAttribute filter, and fixes Hangfire.SqlServer’s backward compatibility issue with databases that use the old Schema 5 version.

Continue Reading →

Hangfire 1.8.4

This is a patch release that slightly improves the shutdown pipeline of a background job server and allows to get the current server id from IServerFilter implementations.

Continue Reading →

Hangfire 1.7.36

This correcting release fixes possible ObjectDisposedException in tests when using a background job server as a hosted process in ASP.NET Core, and a rare issue with the delayed job scheduler, when a scheduled background job was changed bypassing Hangfire API.

Continue Reading →

Hangfire 1.8.3

Maintenance release that fixes recurring job problems related to the new MisfireHandlingMode.Ignorable mode and adds a few other minor changes.

Continue Reading →

Hangfire 1.8.2

Patch release that fixes InvalidOperationException from new SQL Server metrics and occasional “Can not start continuation” error when using Hangfire.InMemory or Hangfire.Pro.Redis storage.

Continue Reading →

Hangfire 1.8.1

Correcting release that adds missing configuration methods, contains important fixes for the Hangfire.SqlServer storage and adds some tweaks for the Dashboard UI.

Continue Reading →

Hangfire 1.7.35

Maintenance release that fixes possible blocked workers’ problems when using multiple servers in the same applications that listen to different queues with the Hangfire.SqlServer storage. This is a regression appeared in version 1.7.33 when client waiting was implemented.

Continue Reading →

Hangfire.Pro.Redis 3.0.0

Accompanying the release of Hangfire 1.8.0, it supports all the new storage features, including first-class support for explicit queues for jobs, reduced number of network calls when creating or processing background jobs and Redis Server as a time authority for schedulers.

Continue Reading →

Hangfire 1.8.0

Finally Hangfire 1.8.0 is here. The latest version offers a set of great new features like first-class queue support for background jobs, the enhanced role of the Deleted state that now supports exceptions, more options for continuations to implement even try/catch/finally semantics, better defaults to simplify the initial configuration and various Dashboard UI improvements like full-width and optional dark mode support.

Continue Reading →

Hangfire 1.8.0-rc4

4th release candidate of the upcoming Hangfire is here. Version 1.8 offers a set of great new features like first-class queue support for background jobs, the enhanced role of the Deleted state that now supports exceptions, more options for continuations to implement even try/catch/finally semantics, better defaults to simplify the initial configuration and various Dashboard UI improvements like full-width and optional dark mode support.

Continue Reading →

Hangfire 1.8.0-rc3

3rd release candidate of the upcoming Hangfire is here. Version 1.8 offers a set of great new features like first-class queue support for background jobs, the enhanced role of the Deleted state that now supports exceptions, more options for continuations to implement even try/catch/finally semantics, better defaults to simplify the initial configuration and various Dashboard UI improvements like full-width and optional dark mode support.

Continue Reading →

Hangfire 1.7.34

Small maintenance release that adds reschedule overloads for BackgroundJob and IBackgroundJobClient types and fixes tricky case with generics and inheritance when creating a background job.

Continue Reading →

Hangfire 1.7.33

Patch release that implements sliding invisibility-based fetch logic with waiting on client’s side instead of SQL Server’s one (so wait statistics will be clear now) and uses SQL Server as a time authority for server heartbeats (unsynchronized clock will not cause servers to suddently disappear). Also implemented IAsyncDisposable support for service scopes in modern .NET Core applications.

Continue Reading →

Hangfire.Pro.Redis 2.8.20

This version has a compatibility patch for highly popular Hangfire.Console extension so it can’t slow down the background processing when CLR’s Thread Pool is starved.

Continue Reading →

Hangfire 1.7.32

Maintenance release with added Swedish translation of the Dashboard UI and other minor tweaks.

Continue Reading →

Hangfire.Pro 2.3.2

This patch version fixes possible “stuck batch” issue when state of a job inside a batch continuation is changed externally before that batch continuation is started. Such state transitions shouldn’t be used, because they violate encapsulation, but nevertheless while they aren’t prohibited by the code, we should handle such cases somehow.

Continue Reading →

Hangfire.Throttling 1.4.0


Hangfire.Pro.Redis 2.8.19

This patch version contains improved logging for SSL/TLS authentication routine to understand what’s actually happened when something went wrong with the DEBUG log level enabled for the Hangfire.Pro.Redis namespace.

Continue Reading →

Hangfire.Pro.Redis 2.8.18

This release fixes ArgumentException when accessing the Dashboard UI with Redis metrics enabled if Redis Server instance has multiple additional modules installed.

Continue Reading →

Hangfire.Pro.Redis 2.8.17

This patch release fixes a regression appeared in 2.8 version related to the LUA-based transaction implementation, which didn’t take StackExchange.Redis’s ChannelPrefix option into account when enqueueing a background job id, causing the processing to hang when custom channel prefix is used.

Continue Reading →

Hangfire.Pro 2.3.1

This is a small maintenance release that just add missing overloads for the ContinueBatchWith method that allows to use background jobs based on asynchronous methods as continuations for batches. But this will unfortunately work only for .NET Core platform. Unfortunately support for .NET Framework will come only with version 3.0, because breaking changes required in this case.

Continue Reading →

Hangfire 1.7.31

Maintenance release that adds RecurringJob.TriggerJob method that returns identifier of a triggered background job, bumps Moment.js packages used by Dashboard UI to 2.29.4 and contains fixes for the pt-BR translation.

Continue Reading →

Hangfire 1.7.30

This version contains even better implementation of ASP.NET application shutdown detection logic – detection timer was replaced with a dedicated thread to make it work even when ASP.NET killed all the thread pool threads, and yet another check based on internal state was implemented for more reliable detection.

Continue Reading →

Hangfire 1.7.29

This is a maintenance release that adds more protection to its internal components to prevent and diagnose high CPU consumption when something goes wrong with wait implementation. Uncatchable exceptions like OutOfMemoryException and StackOverflowException are not not handled by Hangfire to avoid leaving the process in a inconsistent state. Finally command batching now works with Microsoft.Data.SqlClient package. Also some very minor features were added, please see the release notes for details.

Continue Reading →

Hangfire.Pro.Redis 2.8.16

This maintenance release fixes the order in which enqueued jobs are displayed on Queues and Enqueued Jobs pages in Dashboard UI or returned from Queues and EnqueuedJobs methods from the Monitoring API component. Now jobs that will be dequeued first are displayed first as expected. Also decreased maximum number of commands per LUA command execution to 200K, others are moved to a subsequent command (previous value was 1M).

Continue Reading →

Hangfire.Pro.Redis 2.8.15

This release fixes a regression appeared in the previous version 2.8.14 when multiple jobs storages are used – background jobs started to be processed one by one in this case.

Continue Reading →

Hangfire.Pro.Redis 2.8.14

This release fixes “too many results to unpack” regression appeared in 2.8.X when using batch continuations with a lot of background jobs.

Continue Reading →

Hangfire 1.7.28

This release contains important fixes for SQL Server-based job storage to work better with sub-second polling (including TimeSpan.Zero for QueuePollingInterval) and properly send heartbeats for long-running jobs even if CLR’s Thread Pool is starved for long periods of time. It is also very likely that some problems related to high CPU usage and high number of fetching queries occurring after deploying new application version to IIS were also fixed (they are almost impossible to catch up, but same workaround already helped in the past).

Continue Reading →

Hangfire.Pro.Redis 2.8.13

Maintenance release that fixes fatal error in connection manager after long period of reconnects and “ConnectionMultiplexer is not a Sentinel connection” error when using Hangfire.Pro.Redis.SEv2 package and trying to reconnect to Sentinel nodes after a failure.

Continue Reading →

Hangfire.Pro.Redis 2.8.12

This release fixed another problem which appear with large number of servers and relates to huge amount of “Removing server…” log messages after ungraceful shutdown. Now method which is responsible for removing inactive servers uses a distributed lock to avoid concurrency and produce less Redis commands and logs.

Continue Reading →

Hangfire 1.8.0-beta4

The last preview version of the 1.8 release that adds support for dark mode for Dashboard UI (UseDarkModeSupportForDashboard configuration method should be called, since extension packages don’t support this mode yet), allow to use custom JavaScript and CSS files and improve default settings for SQL Server-based job storage to match the recommended options whenever possible.

Continue Reading →

Hangfire.Pro.Redis 2.8.11

This release reduces the network bandwidth consumption in environments with hundreds of servers and hundreds of queues. There were unnecessary calls to SMEMBERS servers command in the FetchedJobsWatcher component responsible for fault detection, leading to ServerCount*QueueCount number calls to it.

Continue Reading →

Hangfire 1.7.27

This is a maintenance release that adds Turkish language and fixes 85% and less zoom in Safari for the Dashboard UI, and contains some other minor fixes.

Continue Reading →

Hangfire 1.7.26

This security patch fixes a regression appeared in the previous version 1.7.25 that makes Dashboard UI available for remote requests in the default configuration, e.g. when no authentication filter specified. Please note that when custom authentication filter is defined as recommended in the documentation, everything works as expected, but upgrade is recommended in any case. Please read the GHSA-7rq6-7gv8-c37h security advisory for details.

Continue Reading →

Hangfire 1.7.25

Maintenance release that bumps dependencies in Dashboard UI to the latest patch versions, fixes exception when trying to add a continuation for an already expired job when using Hangfire.SqlServer and contains other minor tweaks.

Continue Reading →

Hangfire 1.8.0-beta3

This beta finally adds the Queue property directly to a job and adds all the required overloads to BackgroundJob, RecurringJob classes and IBackgroundJobClient and IRecurringJobManager interfaces to specify queues dynamically at run-time and preserve them between retries. Dashboard UI is now implemented in full-width, so long method names are no longer a problem.

Continue Reading →

Hangfire 1.7.24

This is a maintenance release that adds support for async authorization filters via the new DashboardOptions.AsyncAuthorization property, contains small improvements for the Dashboard UI and stops using readcommittedlock table hint when not required in the Hangfire.SqlServer package.

Continue Reading →

Hangfire.Pro.Redis 2.8.10

This maintenance release forces Hangfire.Pro.Redis to always use dedicated threads for reading Redis responses, even on Windows where IOCP threads were used by default. This will help to avoid slowdowns and timeout exceptions when all IOCP threads are busy or blocked by user code. This change is made because System.Net.Http.HttpClient package began to leak IOCP threads to user code, starting from one of the recent versions.

Continue Reading →

Hangfire 1.7.23

Maintenance release that resolves the NotImplementedException exception in the EnlishPromotableSinglePhase method when running on Mono, makes IdempotentCompletionAttribute work regardless of the current serializer settings and also fixes some other minor issues.

Continue Reading →

Hangfire.Pro 2.3.0

It is now possible to add batch continuations with new OnlyOnCompletedState and OnlyOnDeletedState options. The BatchContinuationOptions enum now allows to specify multiple values, so it is possible to mix different options to create a continuation that fire in multiple cases. For example continuations with OnlyOnSucceededState | OnlyOnCompletedState option specified will only be executed once antecedent batch is either succeeded or completed – but not deleted, e.g. canceled.

Continue Reading →

Hangfire.Pro.Redis 2.8.9

This maintenance release adds more logging only, but now almost every exception that occurs inside StackExchange.Redis package is logged with the DEBUG log level. So internal errors can be tracked now much faster than before.

Continue Reading →

Hangfire 1.6.30

Maintenance release for 1.6.X branch with some fixes backported from recent 1.7.X versions, including a fix for possible connection leak in Hangfire.SqlServer when an exception is thrown while releasing a distributed lock.

Continue Reading →

Hangfire.Pro.Redis 2.8.8

This is a maintenance release that increases reliability after failovers when using older Redis version with asynchronous replication enabled.

Continue Reading →

Hangfire 1.8.0 Betas

Hangfire 1.8.0-beta2 and beta1 recently released. The new versions bring a lot of improvements to create more complex workflows with new continuation options, improve role of the DeletedState that now has its own exception information and displayed on graphs when supported by an underlying storage, bring more methods for underlying abstractions to reduce the number of round-trips to a storage and other features as well. Also this version has better defaults for Hangfire.SqlServer package, and sliding invisibility timeout option will now be used by default.

Continue Reading →

Hangfire.Pro.PerformanceCounters 2.2.4

This release fixes problems with missing performance counter instances in Performance Monitor due to changed instance naming rules in Microsoft.Owin.* packages of version 3.X and the absence of instance name sanitization.

Continue Reading →

Hangfire 1.7.21 and 1.7.22

This release bumps package versions referenced by Dashboard UI and fixes a possible reason for non-disposed SqlConnection instances in Hangfire.SqlServer storage when distributed lock release throws an exception (possible when using DisableConcurrentExecution filter with long-running jobs).

Continue Reading →

Hangfire 1.7.20

This maintenance release adds Norwegian translation, fixes problem with changing time zone of a recurring job, contains improvements for .NET Core integration and fixes Schema 6 migration (for those who didn’t apply it yet) that modifies the last Id column that’s still based on Int32 type, to use Int64 instead.

Continue Reading →

Hangfire.Pro.Redis 2.8.6

General improvements for Hangfire.Pro.Redis with better error messages that contain actual problem (for example “No such host is known” instead of “SocketFailure on PING”), eliminated last bits of thread pool usage when using synchronous methods (so everything will be stable now when thread pool threads are busy) and other fixes.

Continue Reading →

Hangfire.Throttling 1.3.0


Hangfire 1.7.19


Hangfire.Pro.Redis 2.8.5

This is an important maintenance release that fixes regressions appeared in version 2.8.0. Please consider upgrading especially if you are using batches with 25,000 background jobs and more.

Continue Reading →

Hangfire.Pro.Redis 2.8.4

The RedisStorageOptions.MaxStateHistoryLength option is added in this release to limit the number of state history entries and avoid storage leak when some background job is rescheduled again and again. By default, only 10 state history entries are now persisted, but this value can be configured with the new option.

Continue Reading →

Hangfire 1.7.18

This release contains a new option SqlServerStorageOptions.DeleteExpiredBatchSize to let expiration manager delete more expired records in a single pass when processing workload is large enough.

Continue Reading →

Hangfire.Pro.Redis 2.8.3

This version fixes regression appeared in 2.8.0 which leads to occasional SemaphoreFullException exception when distribute lock can’t be obtained and timeout exception should be thrown instead. Also the RelyOnInternalReconnects experimental option was added to test less aggressive reconnection logic built into SE.Redis package.

Continue Reading →

Hangfire 1.7.17

This maintenance release only fixes a regression appeared in Hangfire 1.7.15 when using SQL Server 2008 or SQL Server 2008 R2, related to changed queries for “upsert” operations.

Continue Reading →

Hangfire 1.7.16

This release addresses a blocking issue appeared in version 1.7.9, where workers were unable to pick up new jobs when application is using multiple SQL Server storage instances in the same process with same queue names for each storage.

Continue Reading →

Hangfire.Pro 2.2.3

This release fixes possibly hanging continuations for background jobs which belong to a canceled batch. Problem was caused by wrong execution order between BatchSupport and ContinuationsSupport filters, and the former now runs before the latter to give it a chance to recognize antecedent background job was deleted.

Continue Reading →

Hangfire.Pro.Redis 2.8.1 & 2.8.2

These are maintenance releases that fix blocking issues appeared in version 2.6.0 when using multiple RedisStorage instances in the same process with the same queue names, avoid sharing the same semaphore for different storages when using distributed locks, add RedisStorageOptions.UseLegacyTransactions option to avoid using LUA-based transactions and add experimental Hangfire.Pro.Redis.SEv2 package based on StackExchange.Redis 2.X.

Continue Reading →

Hangfire 1.7.15

This release adds the IGlobalConfiguration.UseMaxLinesInExceptionDetails option to cap exception details when background jobs fail with an exception and forces only the first 100 lines of a stack trace to be persisted by default to avoid uncontrollable storage size growth. Also some improvements for SQL Server storage were added.

Continue Reading →

Hangfire.Pro.Redis 2.8.0

This version contains the most important changes for request/response processing pipeline since version 2.1 in terms of performance. LUA scripting feature is now used to implement transactions with proper locking, and it is much more efficient than the previous implementation based on conditional transactions. Less round-trips, reduced impact caused by latency, optimized distributed locks and better fetching from multiple queues makes this release so important, especially when using the package in a cloud environment.

Continue Reading →

Hangfire 1.7.14

New version fixes a regression appeared in 1.7.13 which causes unexpected duplicate entries in the JobParameters table when using SQL Server as a job storage with older schemas (V5 and below). This problem is caused by a changed query in the previous version, and that change is rolled back now. No other manual steps required to fix the issue.

Continue Reading →

Hangfire.Throttling 1.2.0

New release brings support to detach background jobs from mutexes and semaphores without changing their state. New buttons added to the Dashboard UI, and new methods added to the ThrottlingManager class (but not to the interface to avoid breaking changes) to support the new feature.

Continue Reading →

Hangfire.Pro.Redis 2.7.6

This version adds support for authenticating with username available in Redis 6 to use ACL support. Just add username= or user= option to your connection string, and you’ll be able to use the same Redis instance for multiple tenants with proper data isolation between them.

Continue Reading →

Hangfire 1.7.13


Hangfire.Pro.Redis 2.8.0-beta1

The new pre-release version brings significantly improved command pipeline with less stalls due to the absence of conditional transactions (now using LUA scripting instead of them), less round-trips to Redis, decreased latency when obtaining distributed locks and optimized fetching from multiple queues using a single command. These changes heavily increase the throughput especially when using Redis in a cloud environment or using complex features in Hangfire.

Continue Reading →

Hangfire.Pro.Redis 2.7.5

This is a maintenance release that fixes some connectivity problems that may occur in corner cases, such as cluster fail-over and connection timeouts.

Continue Reading →

Hangfire 1.7.12

French translation added in this patch release (thank you @PaulARoy!), and now full absent type or method details will be shown in the Job Details page instead of the “Can not find the target method” error message. It turns out there was a simple and non-breaking implementation for this important improvement I could find for a long time. Some help from the storage is needed for this change to work, and Hangfire.SqlServer 1.7.12 and Hangfire.Pro.Redis 2.7.4 already provide it.

Continue Reading →

Hangfire.Throttling 1.1.1

This is a small feature release to add human-readable descriptions for throttlers. So we can specify descriptions when creating a throttler instead of having really long identifiers, and see them in Dashboard UI. Also some minor problems fixed in this release.

Continue Reading →

Hangfire.Pro.Redis 2.7.3

This is yet another maintenance release that allows to turn off certificate revocation checks when using SSL/TLS.

Continue Reading →

Hangfire.Pro.Redis 2.7.2

Maintenance update for Hangfire.Pro.Redis package that comes with some fixes, including NullReferenceException in “Processing Jobs” page and possible client timeouts during peak loads when working with Redis Cluster.

Continue Reading →

Hangfire.Pro.Redis 2.7.0 & 2.7.1

This version brings a new method of parsing responses from Redis in .NET Core that works well even if CLR’s thread pool is starved. Dedicated reader threads now used for this purpose when running on Linux or macOS, but on Windows thread pool’s I/O threads now used instead to avoid spawning additional threads, since I/O threads work fine there. So upgrades are great for all of the operating systems.

Continue Reading →

Hangfire 1.7.11 & 1.6.29

These versions contain important fixes for the whole processing pipeline, including fire-and-forget, delayed and recurring jobs in the presence of custom extension filters that can throw exceptions. Also a built-in support for reliable shutdown detection of ASP.NET applications was added to the Hangfire.Core package to prevent running old code base when the new one is already deployed. And recurring jobs page in 1.7.11 now displays all the exceptions that prevent a particular recurring job from being scheduled.

Continue Reading →

Hangfire.Pro 2.2.2

This is a maintenance release that fixes serialization exception when trying to create a job continuation for batch in a batch continuation, disallows caching “JobStorage.Current is null” exceptions and let us to configure maximum number of entries for final batch state lists.

Continue Reading →

Hangfire.Pro.Redis 2.6.2

This release is unrelated to the previous ones and fixes wrong behavior when non-recommended max-memory policy is used in Redis, such as volatile-* one. I still don’t recommend to use other than noeviction policies, but at least the following case is handled better.

Continue Reading →

Hangfire.Pro.Redis 2.6.0 & 2.6.1

The new version brings a lot of improvements to the internal implementation of Hangfire.Pro.Redis itself and its underlying Redis client – ability to use multiple connections within the same storage, improved request/response processing pipeline, TLS 1.2 enabled by default for encrypted connections and other improvements and fixes.

Continue Reading →

Hangfire.Dashboard.Authorization 3.0

The new version contains authorization filters based on the non-obsolete IDashboardAuthorizationFilter interface appeared in Hangfire 1.6.0 (so it doesn’t work on previous versions), adds support for custom crypto-providers for Basic Authentication and fixes issues with wrong AssemblyFileVersion attribute.

Continue Reading →

Hangfire.Pro.Redis 2.5.2—2.5.5

These versions contain important fixes for Redis-based job storage implementation, including better handling of fail-over events in clustered environments, reduced number of timeout exceptions and better reliability for distributed locks.

Continue Reading →

Hangfire 1.7.9

New version contains important changes for Hangfire.SqlServer package, fixing a possible DbConnection leak after a database was taken offline and reducing the database load when sub-second polling interval is used. There are also some minor improvements for the Dashboard UI.

Continue Reading →

Hangfire 1.7.8

This version contains improvements for recurring jobs, support for Microsoft.Data.SqlClient package, experimental ability to use background job results in continuations (after calling the IGlobalConfiguration.UseResultsInContinuations extension method), even better integration with .NET Core 3.0 and bunch of other fixes.

Continue Reading →

Hangfire 1.7.7

This is a maintenance release that contains useful enhancements for Dashboard UI, support for command batching even in .NET Core when using System.Data.SqlClient 4.7.0 and higher, support for the Microsoft.Data.SqlClient package in Hangfire.SqlServer (postponed to 1.7.8) and other minor changes.

Continue Reading →

Hangfire 1.7.6

This is yet another maintenance release with added support for dashes in queue names (thanks, @augustoproiete), better recurring job error messages in Dashboard UI and some other useful fixes.

Continue Reading →

Hangfire 1.7.5

This is a maintenance release that provides better handling of recurring job scheduling errors, clearly shows when there are problems with fetching statistics in Dashboard UI (thanks, @prochnowc!), doesn’t infinitely caches IBackgroundJobClient and IRecurringJobManager instances that throw JobStorage.Current is null exceptions, and also adds the AddHangfireServer overload with options-based callback.

Continue Reading →

Hangfire.Pro 2.2.1

This release fixes occasional timeout exceptions that occur when attaching nested batch continuations for nested batches that are currently processed. The exception occurred due to a deadlock caused by different batch lock acquisition order when nested batches are involved.

Continue Reading →

Hangfire 1.7.4

This is a maintenance release that contains important fixes for the Hangfire.SqlServer package to avoid deadlocks if you have long-running jobs, improvements for background process dispatch loop’s implementation, and also an interesting experimental feature that can transparently make background job creation resilient to transient exceptions by using idempotent retries.

Continue Reading →

Hangfire.Pro 2.2.0

This is a maintenance release that plays better with recently released Hangfire 1.7, so you don’t get extra framework packages when targeting .NET Core or .NET Standard 2.0. Also, continuation filters now don’t throw an exception again and again, when continuation has already expired.

Continue Reading →

Hangfire 1.7.3 and 1.6.26

This version contains security fixes to prevent possible XSS attacks as described in #1441. They don’t relate to user data submitted to Hangfire directly via method arguments, but it’s recommended to upgrade anyway. If you are using Hangfire 1.6, please upgrade to version 1.6.26 instead.

Continue Reading →

Hangfire 1.7.2

This patch release contains stability improvements for recurring jobs, better handling of custom time zone resolvers in Dashboard UI and other minor fixes. If you are upgrading from 1.6.X, please see Upgrading to Hangfire 1.7 article to learn the details.

Continue Reading →

Hangfire.Pro.Redis 2.5.1

This version brings support for Mono on Linux and macOS platforms without the need to reference additional packages. On Windows, both .NET Framework and .NET Standard 2.0 now use the same methods for polling a socket for new data, to make the behavior consistent across platforms.

Continue Reading →

Hangfire 1.7.1

This is a patch release that adds some nice features for Dashboard UI, knows how to deal with recurring jobs with invalid Cron expressions, and contains some minor improvements for SQL Server storage. Also, Hangfire.NetCore package was added to support new .NET Core Worker Service applications without referencing any ASP.NET Core packages.

Continue Reading →

Hangfire 1.7.0

Hangfire 1.7.0 is finally released with the whole bunch of new features and improvements for background processing, background and recurring jobs, SQL Server storage, .NET Core integration and interoperability between .NET platforms to provide a strong foundation for future features and extensions.

Continue Reading →

Hangfire 1.7.0 RC

This is a release candidate for the upcoming version 1.7.0 with a lot of new features and improvements for almost all the aspects of background job processing. Below you’ll find a short list of them as well as upgrade details, and more information will be published later. Please note this is a pre-release, and it’s not suitable for critical environments.

Continue Reading →

Hangfire 1.6.23

This version fixes some issues and acts as an optional trampoline to the upcoming 1.7.0 release to simplify the rolling upgrades. So your current servers will work side-by-side with the newer ones even if you are using SQL Server as a job storage and applied the new migration. There will be more information on upgrading, but this version is nice-to-have (but not required) anyway.

Continue Reading →

Hangfire.Pro.Redis 2.4.0

This is an important release that makes timeout detection much more robust. First of all, Redis server itself now acts as a single time authority for performing timeout checks for both jobs and servers rather than UTC time of a current Hangfire Server. So you don’t need to use synchronized clocks to prevent false positives for timeout checks.

Continue Reading →

Hangfire 1.6.22

This version finally fixes interoperability issues that arise, because primitive built-in types like String reside in assemblies with different name in .NET Core (System.Private.CoreLib.dll) and .NET Framework (mscorlib.dll). This led to JobLoadException in .NET Framework-based applications, when they tried to perform background jobs created by a .NET Core-based one. The new version solves this problem by re-writing assembly name when resolving a type for a job and its parameters.

Continue Reading →

Hangfire.Pro 2.1.2

This release fixes unexpected behaviors when we are cancelling a batch that has continuations for its inner items as in the following sample. When those continuations have continuations themselves, or when we attaching a job with continuation to a cancelled batch, our leaf-level continuations stuck in the awaiting or non-initialized state until queued manually.

Continue Reading →

Hangfire 1.6.21

This are late release notes for a maintenance release with minor fixes. Please see the list of fixed issues below and upgrade if necessary.

Continue Reading →

Hangfire.Pro.Redis 2.3.0

The goal of this release is to resolve the timeout issues that appear in .NET Core 2.X applications. Such behavior was caused by networking implementation of SE.Redis, which posted Redis response processing logic to thread pool’s worker threads, instead of completion ports or custom threads, due to the lack of the corresponding API in netstandard1.X specification.

Continue Reading →

Hangfire 1.6.20

This release contains fixes for security issues related to dashboard, so it is highly recommended to upgrade. Cross-Site Request Forgery protection was added by using existing libraries, but methods are different across application frameworks:

Continue Reading →

Hangfire.Pro 2.1.1

This maintenance release fixes race condition in the UseBatches method that can lead to the InvalidOperationException with “Batches are not initialized” message.

Continue Reading →

Hangfire 1.6.19

This release fixes a regression appeared in 1.6.18 as well as contain some improvements for the Hangfire.SqlServer package.

Continue Reading →

Hangfire 1.6.18

This release contains a lot of fixes, but the most important ones are related to .NET Core and ASP.NET Core frameworks. Filters based on attributes are now working fine there, and DisplayName decoration will finally bring the human-ready name for your jobs. Other fixes are mostly related to dashboard.

Continue Reading →

Hangfire.Pro.Redis 2.2.0

This release solves connectivity issues with Redis Cluster 4.X, appeared as a result of breaking changes introduced in Redis 4.0.

Continue Reading →

Hangfire 1.6.17

This release contains important improvements when SQL Server is used as a job storage. Distributed locks are much more robust now even when there are significant connectivity issues (like those sometimes happen in Azure or other cloud environments) and require much fewer connections to SQL Server. Another improvement is related to a new option that allows transactions to be committed with fewer round-trips.

Continue Reading →

Hangfire 1.6.16

This is yet another maintenance release that fixes a bunch of non-critical bugs in Hangfire.Core and Hangfire.SqlServer packages.

Continue Reading →

Hangfire.Pro 2.1.0

This release brings full support for continuations in batches, including the nested ones. Now you can create continuations within a batch even for jobs or batches in nested batches. Consider the following sample:

Continue Reading →

Hangfire 1.6.15

This release contains important fixes for the Hangfire.SqlServer package, which is actively using the sp_getapplock stored procedure to synchronize work between different servers. I’ve realized that locks shouldn’t be awaited on SQL Server’s side, because this may lead to SQL Server’s connection pool starvation, because each blocked request will block a single worker thread.

Continue Reading →

Hangfire 1.6.14

This versions adds possibility to use non-transactional message fetching algorithm when using Hangfire.SqlServer package. This is especially helpful, if you have a lot of long-running background jobs, since they may prevent you from taking transaction log backups, leading to the Transaction log is full due to ‘ACTIVE_TRANSACTION’ error.

Continue Reading →

Hangfire 1.6.13

This release contains a bunch of fixes for core and integration packages. The most important updates are fix for SQL connection leaks when we failed to acquire a distributed lock, and wrong queue selection, when continuation is created after antecedent job is finished. So upgrade is recommended.

Continue Reading →

Hangfire.Pro.Redis 2.1.1

This is a minor update that fixes VS Code debugger crash on OS X, and don’t report ThreadAbortException as fatal. You can update only if these issues annoys you.

Continue Reading →

Hangfire.Pro 2.0.1

Another bug related to forever incomplete batches has been fixed. This bug existed for a long time, so I’d recommend anyone to upgrade.

Continue Reading →

Hangfire.Pro 2.0.0

This release contains the most amazing update to the batches feature. Now you can create nested batches, attach jobs or batches to an existing batch, regardless of its current state, and lazily cancel running batches. Also, you can create job continuation for batch, and batch continuation for job. These feature allows you to build powerful workflows on top of Hangfire with ease.

Continue Reading →

Hangfire.Pro.Redis 2.1.0

Redis Cluster is finally supported. Also improved connection resilience using custom connection loop, upgraded StackExchange.Redis to the latest version and fixed some nasty bugs. So I’d recommend to upgrade, especially if you are using Redis in cloud environments.

Continue Reading →

Hangfire.Pro 1.4.10

​There was a lack of distributed lock during the batch creation phase. If an antecedent batch succeeded just after adding a batch continuation (continuations:finished set), but before the continuation was created, antecedent batch was silently ignoring the fact that continuation does not exist yet. ​I’ve added a required distributed lock, and taught a state filter related to continuations to throw an exception, when continuation doesn’t exist.

Continue Reading →

Hangfire.Pro.Redis 2.1.0-beta1

Finally Redis Cluster is officially supported by Hangfire.Pro.Redis package, and correctly handles the corner cases of Redis’ async replication. I was able to implement it without requiring RedLock algorithm, regular WATCH commands are used to ensure distributed lock correctness.

Continue Reading →

Hangfire.Pro 1.4.9

This is a correcting release that mainly fixes regression related to dashboard, appeared in the previous version.

Continue Reading →

Hangfire.Azure.ServiceBusQueue 2.2.0

A recommended upgrade for all users to improve the reliability and accuracy of the service bus integration:

Continue Reading →

Hangfire 1.6.12

This release brings better exception handling policy for state changing pipeline. Previously, non-transient exception in a state filter could cause a worker to perform retries for affected background job infinitely. And a large number of such background jobs could stall the processing.

Continue Reading →

Hangfire 1.6.11

This release fixes a problem with CSS and JS files in dashboard appeared in 1.6.10, as well as corrects the authorization behavior, when the User property is null.

Continue Reading →

Hangfire 1.6.10

This is a maintenance release that contains fixes for job continuations and some dashboard issues related to Content Security Policy and recurring jobs page. It’s highly recommended to upgrade to prevent problems with continuations. They are rare, but lead to significant headache.

Continue Reading →

Hangfire.Pro 2.0.0-beta2


Hangfire 1.6.9

This is a small correcting release that make it possible to have a workaround for TimeoutException exceptions when using SQL Server with huge arguments or batches. The SqlServerOptions.CommandTimeout option was added to allow to override the default timeout of 30 seconds.

Continue Reading →

Hangfire Pro 1.4.8

This release contains a bunch of fixes for batches, and is recommended for anyone who use them. Batches now always created in a correct state (Started, Completed or Succeeded), depending of state of its jobs. This is the most important change that fixes weird problems with batches that hanging forever.

Continue Reading →

Hangfire 1.6.8


Hangfire.Pro.Redis 2.0.6

This is a correcting release that fixes Server.StartedAt field reset problem during each server heartbeat, which lead to confusion that servers are constantly restarted, when watching the Servers page. It also adds missing GetValueFromHash method required by popular Hangfire.Console extension.

Continue Reading →

Hangfire.Pro.Redis 2.0.5

This is a maintenance release that add support for Hangfire.Core 1.4.0 for conservative users who are planning to switch to use a more stable StackExchange.Redis client package, but don’t want to upgrade Hangfire.Core. Originally this package supported only ≥ 1.5.0 versions.

Continue Reading →

Hangfire 1.6.7

This is a correcting release that brings fixes to fully support generic methods, whose generic arguments are defined in their parameters, including List<T> and T[]. A lot of issues with Dashboard UI that cause exceptions and other errors, like uncontrolled growth of event listeners on resize, were also fixed. Please see the full delails below.

Continue Reading →

Hangfire.Pro.Redis 2.0.4

This is a maintenance release that fixes ArgumentNullException that appears in Dashboard UI and during a call to the RedisMonitoringApi.Servers method, when BackgroundJobServer instance was resurrected. Resurrection happens when a server was removed from active servers list due to network problems, but then appeared again.

Continue Reading →

Hangfire.Pro.Redis 2.0.3

This release adds an option that explicitly allows using multiple endpoints in the connection string, but it’s not recommended. Use it at your own risk! Here’s a small explanation:

Continue Reading →

Hangfire 1.6.6

This is a correcting release that fixes a regression, when using generic methods of a scoped variable in expression for background jobs, as well as some minor optimizations for SQL Server. It also adds CLS compliance for basic packages, since public API is already compliant. Boring release, nothing interesting here.

Continue Reading →

Hangfire.Pro.Redis 2.0.2

This release brings us a single package that targets both .NET Framework and .NET Core, so there’s no need to use separate packages now. It also fixes a rare issue, when a timed out background job stays in the processing set indefinitely, causing dashboard exceptions.

Continue Reading →

Hangfire 1.6.5

This correcting release contains a lot of stability improvements for Hangfire.SqlServer, especially for SQL Azure Database environments. Processing is now more predictable even in Basic pricing tier, there is a special harness application that’s running 24/7 to ensure everything is fine. Some problems related to I18N, authorisation and continuations were also fixed.

Continue Reading →

Hangfire 1.6.4

This release fixes a problem that caused SqlConnection instance to leak when nested distributed locks are acquired for the same resource. If you are using batches, or continuations, and SQL Server as a storage, it is highly recommended to upgrade to prevent connection pool starvation and timeout exceptions.

Continue Reading →

Hangfire 1.6.3

This is a maintenance release that contains fixes for several bugs. It is highly recommended to upgrade to this version, if you are using Hangfire.SqlServer. Thanks to all folks who helped with reporting and investigating these issues!

Continue Reading →

Hangfire.Pro.Redis 2.0

Brand new version of Hangfire.Pro.Redis is finally available. It is now based on feature-rich StackExchange.Redis library, allowing us to bring Hangfire to more environments that use Redis storage in the near future. This version comes with some new features, including SSL support and highly reduced connection usage.

Continue Reading →

Hangfire Pro 1.4.6

This version fixes different problems, that caused batches and batch continuations appear with no background jobs under rare circumstances. Also, background jobs now have the same expiration time with the batch itself. It is highly recommended to upgrade, if you are using batches.

Continue Reading →

Hangfire 1.6.2

This correcting release contains important fixes for SQL Server and MSMQ integrations, as well as some cosmetic changes to the Dashboard UI. Major blocking problem was resolved, when using Hangfire with SQL Server, that may cause a lot of blocking records in the State table, preventing background processing from working flawlessly, when expired records are removed from a database – Database Engine didn’t use the right index during the query performance.

Continue Reading →

Hangfire 1.6.1

This is a correcting release that fixes a couple of problems, including exception when using Serilog (appeared in 1.6.0), wrong CRON format strings for intervals, and ones that relate to the .NET Core platform. They were revealed by adding support to continuously run unit tests on Windows, Linux and OS X for the .NET Core using AppVeyor and Travis CI.

Continue Reading →

Hangfire 1.6.0

Hangfire 1.6 just released with experimental .NET Core platform support, deep integration with ASP.NET Core and async/await programming model support. Start processing background jobs with ease even on Linux and OS X today!

Continue Reading →

Hangfire 1.5.9

This release contains major bug fixes, and is very recommended to upgrade. In short, OperationCanceledException doesn’t cause background processing to stop now. Dashboard UI doesn’t leak READ UNCOMMITTED isolation level, and READ_COMMITTED_SNAPSHOT option doesn’t lead background jobs to stuck in Enqueued state.

Continue Reading →

Hangfire 1.5.8

This release fixes a bug appeared in version 1.5.6 of the Hangfire.SqlServer package. There was a race condition between the Timer and Worker threads, that causes the following problems, especially when small background jobs are processed.

Continue Reading →

Hangfire 1.6.0-beta3

Third beta of the upcoming 1.6 release. Contains a fix for a bug introduced in the previous beta, related to inability to add custom filters, as well as fixes from the recent 1.5.7 version.

Continue Reading →

Hangfire 1.5.7

This is a correcting release that contains a fix for Dashboard UI crashes when using MSMQ (finally, thanks @yangman for this!), as well as some other minor fixes.

Continue Reading →

Hangfire.Pro.Redis 2.0.0-beta1


Hangfire Pro 1.4.5

This release fixes distributed locks in Hangfire.Pro.Redis that didn’t take the Prefix option into account. This may result in problems and different timeout when a single Redis instance is used for a bunch of applications with separate code base.

Continue Reading →

Hangfire 1.6.0-beta2

This is the second beta of upcoming the 1.6 release. It contains some new features, but most importantly, it incorporates bug fixes released with recent 1.5.5 and 1.5.6 versions related to SQL Azure and recurring jobs, please see them for more details.

Continue Reading →

Hangfire 1.5.6

This release fixes an issue related to SQL Azure and background jobs, running more than 30 minutes. The problem is caused by Azure Database Engine which closes idle connections after 30 minutes of inactivity. Hangfire now periodically sends “keep-alive” queries to prevent this.

Continue Reading →

Hangfire 1.5.5

This is a correcting release that fixes a problem with recurring jobs. It is related to a possible misfire on a first run, if a background processing server was inactive during the scheduled time.

Continue Reading →

Hangfire 1.6.0-beta1

This is the first beta of an upcoming 1.6 release. Added support for async background job methods, ability to access context when creating an IoC container scope, dashboard with i18n support, redesigned Job Details page and zero latency for simple setup with SQL Server.

Continue Reading →

Hangfire 1.5.4

This is a correcting release that is highly recommended to install. It fixes issue related to daylight savings in recurring jobs, and prevents infinite loop when changing state of a background job that doesn’t exists (for example, when deleting a job).

Continue Reading →

Hangfire Pro 1.4.4

This release fixes an issue with batch continuations, and is recommended for anyone who use them. The issue takes place, when a parent batch unable to complete within 1 hour, after which batch continuation may start with no jobs, because all of them were expired.

Continue Reading →

Hangfire Pro 1.4.3

This release fixes Could not find type Hangfire.Batches.States.BatchAwaitingState exception appeared after upgrading from Hangfire Pro 1.4.0 or 1.4.1 when using batch continuations. Previous release solved the issue partly, and didn’t cover those who just updated from versions listed above.

Continue Reading →

Hangfire 1.5.3

This is a recommended update for all users of Hangfire.SqlServer. It addresses to fix a bug presented in version 1.5.0, associated with incorrect acquiring/releasing of distributed locks after network problems, that may lead to Cannot release the application lock exceptions and other issues related to synchronization.

Continue Reading →

Hangfire.Pro.Redis 1.4.2

This release fixes a security issue that caused Redis password leaks to log targets during the Hangfire Server startup. The password was also shown in dashboard. If you are using password-protected Redis, it is highly recommended to update to this release, and change Redis password.

Continue Reading →

Hangfire 1.5.2

This is a hotfix for Hangfire 1.5.1 users. If you are using one of previous versions, you are unaffected by this bug.

Continue Reading →

Hangfire 1.5.1


Hangfire Pro 1.4.0

New versions of Hangfire Pro packages released to be compatible with Hangfire 1.5.0 version. Background jobs in batches now performing slightly faster, and Redis transaction scope was reduced to the Commit method, allowing to query for data from apply state filters.

Continue Reading →

Hangfire 1.5.0

Finally after 4 months of development and after 4 betas, Hangfire 1.5.0 released. Now you are able to customize your background processing pipeline even more, by using many types that were internal in previous versions. More responsive dashboard, IoC container scopes, support for remote MSMQ queues and other cool features are waiting for you!

Continue Reading →

Hangfire 1.4.7

This is a correcting release that fixes problems with TaskCanceledException thrown by a job method as well as issue with MSMQ extension, when background jobs are created within a TransactionScope block.

Continue Reading →

Hangfire 1.5.0-beta3

Version 1.5.0 will open many types that were internal in previous versions of Hangfire, like Worker or IBackgroundFactory, to enable you to have completely custom background processing. This release simplifies the usage of these types, of course only to decrease the amount of questions on forums :smiley:.

Continue Reading →

Hangfire 1.4.6

This is a maintenance release that fixes deadlocks in expiration manager, SQL command timeouts in distributed locks (and in the DisableConcurrentExecution filter) and correctly handles poison messages in a schedule.

Continue Reading →

Hangfire Pro 1.3.1

This is a correcting release that fixes a race condition related to batch continuations and slightly improves performance of a batch job processing, especially when using SQL Server. It is strongly recommended to upgrade.

Continue Reading →

Hangfire 1.5.0 Beta

This is a pre-release version that adds a lot of great new features for Hangfire requested by you, including background processes, built-in support for custom scopes in IoC containers, queues for recurring jobs and much more!

Continue Reading →

Hangfire 1.4.5

This is a correcring release that fixes NotSupportException: This stream does not support seek operations bug added in 1.4.4. This exception is raised on all unbuffered HTTP POST requests to the Dashboard.

Continue Reading →

Hangfire 1.4.4


Hangfire Pro 1.3.0

This release makes some hard-coded values (like maximum succeeded job list length) configurable through the RedisStorageOptions class. It also helps to re-queue aborted background jobs earlier – instead of waiting for invisibility timeout after non-graceful shutdown, we are re-queueing aborted background jobs right after its server becomes inactive.

Continue Reading →

Hangfire 1.4.3

This is a correcting release that allows Hangfire to work with databases with case-sensitive and binary collations and fixes some other problems. Integration tests now are running against a case-sensitive database to reduce the probability of a mistake.

Continue Reading →

Hangfire Pro 1.2.2

This is a correcting release that fixes job prioritization via queue ordering in an instance of the BackgroundJobServerOptions class and adds support for symbol packages.

Continue Reading →

Hangfire 1.4.2


Hangfire Pro 1.2.0

After a long development, batches and batch continuations are completed, and I’m glad to introduce these features. It was a real challenge for me and for Hangfire to implement these features as a regular extension. If you don’t share my joy (Batches? Why I need them?), I’ll show you why they are so important.

Continue Reading →

Hangfire 1.4.0

About 4 months passed since release of version 1.3, and I’m pleased to introduce the next major release – Hangfire 1.4 with a lot of new features added and a lot of stability improvements made. This is the most important upgrade since version 1.0.

Continue Reading →

Hangfire 1.4.0 RC2

This is a pre-release version of Hangfire 1.4.0 that is considered to be stable (and it is more stable than 1.3.x). Final version will be released after documentation changes (some awesome features added, please see 1.4.0-beta1).

Continue Reading →

Hangfire 1.4.0 RC1

This is a pre-release version of Hangfire 1.4.0 that is considered to be stable.

Continue Reading →

Hangfire 1.4.0 Beta1

This pre-release contains a lot of new features of an upcoming Hangfire 1.4.0 – continuations, time zone support for recurring jobs, new dashboard ui, new configuration classes.

Continue Reading →

Hangfire 1.3.4

This is a correcting release that fixes hourly/weekly statistics display in Dashboard, and a rare issue when we trying to cancel a recurring job from a client filter.

Continue Reading →

Hangfire 1.3.3

This is a correcting release. Fixed a bug related to MSMQ or RabbitMQ extensions, when enqueued job is not processed and “stuck” in the Enqueued state indefinitely until we retry it manually.

Continue Reading →

Hangfire 1.3.2

This is a correcting release. Expiration manager does not attempt to remove all the records at once now. Instead, it removes them by 1000 at a time, so you won’t experience timeout exceptions anymore. If you had problems with recurring jobs, they were fixed also.

Continue Reading →

Hangfire 1.3.0


Hangfire 1.0.0

Hangfire has finally reached the 1.0 milestone! This means that public API is frozen and considered to be stable. Starting from now, the SemVer 2.0 specification will be used for versioning every package (but there may be exceptions, follow the README for each package).

Continue Reading →

Hangfire 0.9.0


Hangfire 0.8.3


Hangfire 0.8.2


Hangfire 0.8.1


Hangfire 0.8.0