Hangfire.Core 1.7.15

An easy and reliable way to perform fire-and-forget, delayed and recurring, long-running, short-running, CPU or I/O intensive tasks inside ASP.NET applications. No Windows Service / Task Scheduler required. Even ASP.NET is not required. Backed by Redis, SQL Server, SQL Azure or MSMQ. This is a .NET alternative to Sidekiq, Resque and Celery. https://www.hangfire.io/

Showing the top 20 packages that depend on Hangfire.Core.

Packages Downloads
Hangfire.SqlServer
SQL Server 2008+ (including Express), SQL Server LocalDB and SQL Azure storage support for Hangfire (background job system for ASP.NET applications).
3
Hangfire
An easy and reliable way to perform fire-and-forget, delayed and recurring long-running, short-running, CPU or I/O intensive tasks inside ASP.NET application. No Windows Service / Task Scheduler required. Even ASP.NET is not required. Backed by Redis, SQL Server, SQL Azure or MSMQ. This is a .NET alternative to Sidekiq, Resque and Celery. https://www.hangfire.io/
3
HangFire.SqlServer
SQL Server job storage implementation for HangFire (background job system for ASP.NET applications).
3
Hangfire.SqlServer
SQL Server 2008+ (including Express), SQL Server LocalDB and SQL Azure storage support for Hangfire (background job system for ASP.NET applications).
2
Hangfire
An easy and reliable way to perform fire-and-forget, delayed and recurring, long-running, short-running, CPU or I/O intensive tasks inside ASP.NET applications. No Windows Service / Task Scheduler required. Even ASP.NET is not required. Backed by Redis, SQL Server, SQL Azure or MSMQ. This is a .NET alternative to Sidekiq, Resque and Celery. https://www.hangfire.io/
2
Hangfire.AspNetCore
ASP.NET Core support for Hangfire (background job system for ASP.NET applications).
2

https://www.hangfire.io/blog/

Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.7.html to learn how to upgrade from 1.6.X.

1.7.15 • Added – IGlobalConfiguration.UseMaxLinesInExceptionDetails option to cap the size of stack traces. • Changed – Only the first 100 lines of a stack trace will be preserved now by default in Failed state. • Fixed – Don't let exceptions with huge stack traces take up too much storage space.

1.7.13 • Added – Catalan translation for Dashboard UI (based on Spanish translation, by @agausachs). • Added – Support for configuring recommended serializer settings via callback (by @Yaevh). • Fixed – Use correct wording for job parameters in Job Details page, add it to resources. • Fixed – Don't push negative points to the realtime graph in dashboard. • Fixed – Don't depend on history collection type returned from Storage API. • Project – Execute tests one by one to ensure exit code isn't being lost (by @willchis).

1.7.12 • Added – Display actual job payload and exception message on job details page when could find the method. • Added – French translation for Dashboard UI (by @PaulARoy). • Added – Expose IStorageConnection.GetRecurringJobs(IEnumerable ids) to public. • Changed – Bump thread priority in heartbeat process for constrained environments. • Changed – Display job properties in a dedicated row in job details page. • Fixed – Avoid storage round-trip when displaying continuations on job details page.

1.7.11 • Added – Display recurring job exceptions directly in the Dashboard UI. • Added – Add built-in support for reliable shutdown detection of ASP.NET apps. • Changed – Unify exception handling in recurring job scheduler. • Changed – Internal feature to perform state changes without calling any filters. • Changed – Decrease the number of retry attempts for recurring jobs to 5. • Fixed – Let workers to ignore any state change filters when all previous attempts to call them failed. • Fixed – Don't let RecurringJobScheduler to stall the pipeline when extension filters throw an exception. • Fixed – Don't let DelayedJobScheduler to stall the pipeline when state filters throw an exception. • Fixed – JobLoadException when new methods deployed, caused by overlapped recycles in ASP.NET applications. • Fixed – Configuration changes aren't taken into account, caused by overlapped recycles in ASP.NET. • Fixed – Zombie servers shown on the "Servers" page that aren't stopped automatically unless app pool is recycled. • Fixed – Pass the whole exception to the Error field of a recurring job. • Fixed – Re-schedule recurring jobs with unsupported versions, instead of stopping the pipeline. • Fixed – Don't stumble over non-existing recurring jobs in a scheduler. • Fixed – Add another check before removing non-existing jobs from delayed jobs to avoid race conditions. • Fixed – Avoid throwing NullReferenceException instead of InvalidOperationException when deserializing a job. • Fixed – Don't transform queue names to upper case in the Dashboard UI.

1.7.10 • Added – Farsi translation for Dashboard UI (by @sepehr1101). • Added – Portuguese translation for Dashboard UI (by @GeErghon). • Added – PrefixPath in DashboardOptions (by @shenjielx). • Added – Allow PageUrl to be overridden by subclass (by @brendonparker).

1.7.9 • Fixed – Additional Chinese translation for Dashboard UI (by @brookqin). • Fixed – Added null checks for expired failed jobs in Dashboard UI (by @ppkale1995-cimpress). • Fixed – Add word break to definition lists for state cards in Dashboard UI. • Fixed – Render long recurring job identifiers correctly in Dashboard UI.

1.7.8 • Added – IGlobalConfiguration.UseResultsInContinuations method to globally enable results for continuations. • Added – Ability to push antecedent job's result to continuations via job parameters with ContinuationsSupport. • Added – JobParameterInjectionFilter server filter to inject job parameters as arguments. • Added – Allow to specify a custom thread factory in UseBackgroundPool methods. • Changed – Add retry attempts for recurring jobs instead of immediately disabling them. • Fixed – CultureInfo.InvariantCulture is now restored properly in background jobs. • Fixed – Recurring jobs aren't triggered early after changing their cron expressions. • Fixed – Don't trigger recurring job when it can't be scheduled due to errors. • Fixed – Argument with a null value is skipped when displaying job arguments in Dashboard UI. • Fixed – Add a workaround for resolving System.Diagnostics.Debug type in .NET Core 3.0. • Deprecated – Deprecate the JobActivatorScope.InnerScope property as it wasn't implemented.

1.7.7

Core • Changed – Produce a trace log message with details when updating a recurring job. • Changed – Return early from CoreBackgroundJobFactory.Create when storage returns null. • Project – Minor changes for the Readme.md file (by @231293). • Project – Add netcoreapp3.0 target framework for Hangfire.Core.Tests. • Project – Add support for MSBuild 15.0 (VS 2019) when building *.cshtml files.

Dashboard UI • Added – Allow modification of the Dashboard UI title (by @tbertenshaw). • Added – Support for HTML tags on the Dashboard UI title (by @caioproiete). • Added – Buttons for 1,000 and 5,000 items per page in dashboard. • Added – Links to previous/next pages to the top of the dashboard page. • Changed – Expose the RazorPage.Context property as a public member. • Fixed – Supplementary Chinese translation (by @mccj). • Fixed – Don't update real-time chart when too much time passed since the last update.

1.7.6 • Changed – Add support for dash characters (-) in queue names (by @caioproiete). • Fixed – Show actual error in Dashboard UI when recurring job can't be scheduled. • Fixed – Ensure backward compatibility when JSON payloads are serialized with field names only. • Fixed – Non-awaited continuations can bring down the whole app when TaskScheduler is set to null. • Fixed – Timeout value is not respected in some cases in the WaitOneAsync method.

1.7.5 • Fixed – Show error message when there's an error loading the statistics in Dashboard UI (by @prochnowc). • Fixed – Properly handle recurring jobs with null or empty 'Job' field. • Fixed – Disable recurring job when we can't schedule it due to an error. • Fixed – Use LazyThreadSafetyMode.PublicationOnly to avoid caching "JobStorage.Current is null" exceptions.

1.7.4 • Added – BackgroundJobClient.RetryAttempts property to make job creation resilient to transient exceptions. • Added – Dashboard localization support in pt-BR (by @candidodmv). • Changed – Protect background dispatchers from moving from stopped state to non-stopped one. • Changed – Unify WaitOne and WaitOneAsync methods with timeout and cancellation token for WaitHandle class. • Fixed – Don't hide an original fatal exception occurred in dispatchers in some cases. • Fixed – Dashboard UI to display "await" keyword on all task-like methods. • Fixed – Display links properly in an informational message on the Servers page in Dashboard UI. • Fixed – Wait for the heartbeat process before shutting down a server.

1.7.3

• SECURITY – Use HtmlEncode in all remaining places in Dashboard UI to prevent XSS attacks.

• Added – Added Dutch language, and updated missing translation on "Servers" page (by @r-win). • Added – Cron.Never method for adding manual recurring jobs that never fire (by @michaltalaga). • Fixed – Add missing AddOrUpdate extension methods for the IRecurringJobManager interface. • Deprecated – Unused HtmlHelper.FormatProperties method is now obsolete.

1.7.2 • Added – DashboardOptions.TimeZoneResolver property to handle custom time zone resolvers in Dashboard UI. • Fixed – RecurringJob.AddOrUpdate method is now able to update a broken recurring job. • Fixed – Recurring job scheduler now properly handles recurring jobs whose job method or time zone is wrong. • Fixed – Don't throw an exception on Recurring Jobs page when time zone can't be resolved.

1.7.1 • Added – DashboardOptions.IgnoreAntiforgeryToken property to disable token validation in Dashboard UI. • Added – Display hints regarding server status on Servers page in Dashboard UI. • Added – Highlight recurring jobs with no next execution in Dashboard UI. • Added – Show actual error in Dashboard UI when recurring job has an invalid Cron expression. • Fixed – InvalidOperationException when AllowSynchronousIO option isn't set in ASP.NET Core 3.0. • Fixed – Set NextExecution value to null when existing recurring job has an invalid Cron expression. • Fixed – Make dashboard charts to be more culture-specific to use correct time format. • Fixed – Obsolete UseSerializationSettings comment now contains correct method name (by @PaitoAnderson). • Project – resx files now re-generated automatically when building a project.

1.7.0 • Added – Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0. • Added – IGlobalConfiguration.SetDataCompatibilityLevel to enable rolling upgrades from version 1.6. • Added – IGlobalConfiguration.UseRecommendedSerializerSettings method for new installations. • Added – Assemblies now loaded automatically when resolving a type when using default type resolver. • Added – Custom TaskScheduler can now be specified in BackgroundJobServerOptions for workers. • Added – IdempotentCompletionAttribute filter to enforce strict order for continuations. • Added – IBackgroundJobClient.ContinueJobWith methods to replace ContinueWith ones in future for clarity. • Added – JobStorage.LinearizableReads virtual property to avoid unnecessary waits in state changer. • Added – Allow async methods to run their continuations on worker thread by disabling TaskScheduler. • Added – Multi-stage shutdown to wait for graceful completion before starting to abort jobs. • Added – Asynchronous checks for job cancellation, IJobCancellationToken can be replaced with CancellationToken (by @pieceofsummer). • Added – Possibility to create millions of recurring jobs without stressing the scheduler. • Added – Second-based recurring jobs are fully supported now with 6-part cron expressions. • Added – Support for custom TimeZoneInfo resolvers in recurring jobs for interoperability purposes. • Added – Package now explicitly targets .NET Standard 2.0, and .NET Framework 4.6 target added as well. • Added – Type roundtrip support between .NET Core and .NET Framework for most common types. • Added – Allow to specify queue names based on job arguments with QueueAttribute via patterns. • Added – PerformContext.Storage property to allow server filters to spawn connections. • Added – GetFirstByLowestScoreFromSet connection method overload that returns multiple items (by @cdschneider). • Added – Entry point for custom job naming strategies available for dashboard (by @pieceofsummer). • Added – JobDisplayNameAttribute class for displaying jobs in dashboard, available on .NET Core (by @pieceofsummer). • Added – Support for async jobs returning ValueTask (by @pieceofsummer). • Added – Support for asynchronous background processes, opens the road toward async storage. • Added – Circuit breaker pattern for background processes to reduce the logging pressure. • Added – Processing server is now able to detect it was expired, and restart itself with the new id. • Added – Ability to use custom delays for automatic retries of a background job. • Added – ThreadAbortException and ThreadInterruptedException handling to keep the background process running. • Added – Support for complex Cron expressions, including the L, W, # characters. • Added – JobActivator.BeginScope method overload with the full PerformContext (by @jeroenvervaeke). • Added – Support for read-only view for dashboard (by @mikechamberlain). • Added – Storage property to control the job expiration time (by @rsilvanet). • Added – Decrease the size of serialized type payloads and remove version information. • Changed – Make TaskScheduler.Default the default scheduler for async jobs to avoid breaking changes. • Changed – Split serializer setting to Internal and User scopes to isolate them (Version_170 Switch). • Changed – Don't allow to affect internal serialization even by JsonConvert.DefaultSettings (Version_170 Switch). • Changed – Share the same type binder between Hangfire itself and Newtonsoft.Json (Version_170 Switch). • Changed – Use more compact representation of dates when using SerializeDateTime (Version_170 Switch). • Changed – Stop using special case for DateTime argument serialization (Version_170 Switch). • Changed – Don't serialize unused AwaitingState.Expiration field (Version_170 Switch). • Changed – Specify parameter type when serializing arguments to allow using TypeNameHandling.Auto option. • Changed – Use case sensitive search when resolving a type as by default in .NET. • Changed – Make SucceededState constructor public to allow state serialization. • Changed – Add IBackgroundJobFactory.StateMachine property (breaking change for low level API). • Changed – Replace Rickshaw with Chart.js to have beautiful charts with less headache. • Changed – DelayedJobScheduler is able to use the new storage method to query multiple jobs at once. • Changed – RecurringJobScheduler now uses index-based checks to fetch only those jobs that should be scheduled. • Fixed – Worker now logs an error, when all the state change attempts failed due to an exception. • Fixed – Don't serialize arguments multiple times when showing job details in dashboard. • Fixed – DateTimeOffset conversion error when it was serialized with TypeConverter. • Fixed – Remove duplicate of argument deserialization code for obsolete Job class methods. • Fixed – Decorate all the exceptions with the SerializableAttribute. • Fixed – ArgumentNullException when job class contains method with non-resolvable generic arguments. • Fixed – "Failed to initialize CoreCLR" error, by removing reference to Microsoft.NETCore.Portable.Compatibility. • Fixed – Possible race conditions in RecurringJobScheduler that may lead to job duplicates. • Fixed – Configuration inconsistency introduced in 1.6.18 leading to issues with custom JobActivator. • Fixed – Triggering the recurring task doesn't update its last execution time. • Fixed – Recurring job which don't have next execution (intentionally or not) don't cause exception. • Fixed – Dashboard recurring jobs sorting is random (now it's based on next execution time). • Fixed – Performance problems with huge amount of recurring jobs. • Fixed – NextExecution field of a recurring job has delay in value getting set. • Fixed – Dashboard graphs have improper sizing. • Fixed – Server disappears from the list, but still performing the background processing. • Fixed – Logging is too aggressive on transient errors. • Fixed – Daylight saving time transitions now handled perfectly in recurring jobs thanks to Cronos. • Fixed – Confusing Cron scheduling, when both day-of-week and day-of-month fields set. • Project – Add DataCompatibilityRangeFact and DataCompatibilityRangeTheory classes for compatibility checks. • Project – Reduce test execution time by removing unnecessary waits.

.NET Framework 4.5

.NET Framework 4.6

.NET Standard 1.3

.NET Standard 2.0

Version Downloads Last updated
1.8.22 1 12/10/2025
1.8.21 1 12/13/2025
1.8.20 0 12/14/2025
1.8.19 0 05/16/2025
1.8.18 0 02/17/2025
1.8.17 0 12/03/2024
1.8.16 0 12/10/2025
1.8.15 1 12/13/2025
1.8.14 0 06/11/2024
1.8.12 0 04/03/2024
1.8.11 0 02/23/2024
1.8.10 0 02/12/2024
1.8.9 0 01/24/2024
1.8.7 0 12/29/2023
1.8.6 0 10/18/2023
1.8.5 3 12/11/2025
1.8.4 0 07/27/2023
1.8.3 0 06/27/2023
1.8.2 0 05/26/2023
1.8.1 0 05/18/2023
1.8.0 0 04/28/2023
1.8.0-rc3 1 12/13/2025
1.8.0-rc1 1 12/14/2025
1.7.37 0 04/08/2024
1.7.36 0 06/29/2023
1.7.35 2 12/10/2025
1.7.34 0 03/30/2023
1.7.33 0 01/31/2023
1.7.32 0 11/21/2022
1.7.31 0 08/19/2022
1.7.30 0 06/10/2022
1.7.29 2 12/12/2025
1.7.28 0 12/18/2021
1.7.27 0 11/03/2021
1.7.26 0 10/27/2021
1.7.25 0 08/30/2021
1.7.24 1 12/12/2025
1.7.23 2 12/13/2025
1.7.22 0 04/13/2021
1.7.21 0 04/12/2021
1.7.20 0 03/19/2021
1.7.19 0 01/15/2021
1.7.18 0 11/20/2020
1.7.17 0 10/20/2020
1.7.16 0 10/14/2020
1.7.15 1 12/13/2025
1.7.14 0 09/24/2020
1.7.13 0 09/15/2020
1.7.12 0 07/24/2020
1.7.11 0 04/15/2020
1.7.10 0 04/02/2020
1.7.9 0 01/20/2020
1.7.8 0 12/05/2019
1.7.7 0 10/22/2019
1.7.6 0 08/05/2019
1.7.5 0 07/18/2019
1.7.4 0 06/28/2019
1.7.3 2 12/14/2025
1.7.2 0 04/29/2019
1.7.1 0 04/16/2019
1.7.0 1 12/13/2025
1.6.30 1 12/10/2025
1.6.29 1 12/10/2025
1.6.28 1 12/13/2025
1.6.27 0 06/27/2019
1.6.26 0 05/23/2019
1.6.25 0 04/09/2019
1.6.24 0 03/27/2019
1.6.23 0 03/13/2019
1.6.22 0 01/25/2019
1.6.21 1 12/11/2025
1.6.20 0 07/31/2018
1.6.19 0 04/06/2018
1.6.18 0 04/05/2018
1.6.17 0 09/19/2017
1.6.16 0 09/02/2017
1.6.15 0 08/08/2017
1.6.14 0 06/16/2017
1.6.13 0 06/07/2017
1.6.12 0 03/22/2017
1.6.11 0 03/14/2017
1.6.10 0 03/13/2017
1.6.9 0 03/02/2017
1.6.8 1 12/12/2025
1.6.7 0 11/25/2016
1.6.6 0 10/13/2016
1.6.5 0 09/24/2016
1.6.4 1 12/13/2025
1.6.3 0 08/19/2016
1.6.2 0 08/05/2016
1.6.1 1 12/11/2025
1.6.0 0 07/15/2016
1.5.9 0 07/11/2016
1.5.8 0 06/17/2016
1.5.7 0 05/30/2016
1.5.6 0 04/22/2016
1.5.5 0 04/14/2016
1.5.4 2 12/10/2025
1.5.3 0 11/06/2015
1.5.2 0 10/15/2015
1.5.1 0 10/14/2015
1.5.0 2 12/13/2025
1.4.7 0 10/01/2015
1.4.6 0 08/29/2015
1.4.5 0 07/24/2015
1.4.4 0 07/23/2015
1.4.3 0 05/27/2015
1.4.2 0 05/06/2015
1.4.1 0 04/14/2015
1.3.4 0 02/04/2015
1.3.3 0 01/28/2015
1.3.2 0 01/27/2015
1.3.1 1 12/11/2025
1.3.0 0 12/10/2014
1.2.2 0 11/24/2014
1.2.1 1 12/14/2025
1.2.0 0 11/17/2014
1.1.1 0 09/05/2014
1.1.0 0 09/03/2014
1.0.2 3 12/11/2025
1.0.1 1 12/14/2025
1.0.0 0 06/30/2014
0.9.1 0 06/12/2014
0.9.0 1 12/14/2025
0.8.3 1 12/13/2025
0.8.2 0 05/21/2014
0.8.1 1 12/12/2025
0.8.0 1 12/14/2025
0.7.5 0 04/10/2014
0.7.4 2 12/13/2025
0.7.3 1 12/13/2025
0.7.1 0 04/01/2014
0.7.0 0 03/22/2014
0.6.2 0 01/28/2014
0.6.1 0 01/27/2014
0.5.2 0 11/19/2013
0.5.1 0 11/12/2013
0.5.0 0 11/10/2013