HangFire.Core 1.7.9

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/

Install-Package HangFire.Core -Version 1.7.9
dotnet add package HangFire.Core --version 1.7.9
<PackageReference Include="HangFire.Core" Version="1.7.9" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HangFire.Core --version 1.7.9
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Release Notes

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.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<T> (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.

Showing the top 10 GitHub repositories that depend on HangFire.Core:

Repository Stars
aspnetboilerplate/aspnetboilerplate
ASP.NET Boilerplate - Web Application Framework
eventflow/EventFlow
Async/await first CQRS+ES and DDD framework for .NET
Xabaril/AspNetCore.Diagnostics.HealthChecks
Enterprise HealthChecks for ASP.NET Core Diagnostics Package
HTBox/allReady
This repo contains the code for allReady, an open-source solution focused on increasing awareness, efficiency and impact of preparedness campaigns as they are delivered by humanitarian and disaster response organizations in local communities.
Jimmey-Jiang/ABP-ASP.NET-Boilerplate-Project-CMS
ABP module-zero +AdminLTE+Bootstrap Table+jQuery+Redis + sql server+quartz+hangfire权限管理系统
i66soft/osharp-v4
osharp framework with .net framework version 4.x
pieceofsummer/Hangfire.Console
Job console extension for Hangfire
marcoCasamento/Hangfire.Redis.StackExchange
HangFire Redis storage based on original (and now unsupported) Hangfire.Redis but using lovely StackExchange.Redis client
stoveproject/Stove
Domain Driven Design oriented application framework, meets CRUD needs
bitfoundation/bitframework
Full stack dev framework for C# / TypeScript / JavaScript developers

Read more about the GitHub Usage information on our documentation.

Version History

Version Downloads Last updated
1.7.9 58,987 1/20/2020
1.7.8 190,411 12/5/2019
1.7.7 311,713 10/22/2019
1.7.6 747,458 8/5/2019
1.7.5 153,351 7/18/2019
1.7.4 227,322 6/28/2019
1.7.3 673,357 5/23/2019
1.7.2 282,931 4/29/2019
1.7.1 188,631 4/16/2019
1.7.0 216,278 3/29/2019
1.6.28 795 1/14/2020
1.6.27 18,879 6/27/2019
1.6.26 24,051 5/23/2019
1.6.25 7,416 4/9/2019
1.6.24 22,883 3/27/2019
1.6.23 160,887 3/13/2019
1.6.22 580,514 1/25/2019
1.6.21 979,968 11/1/2018
1.6.20 1,225,091 7/31/2018
1.6.19 1,015,495 4/6/2018
1.6.18 12,818 4/5/2018
1.6.17 1,470,638 9/19/2017
1.6.16 147,867 9/2/2017
1.6.15 229,861 8/8/2017
1.6.14 435,947 6/16/2017
1.6.13 58,415 6/7/2017
1.6.12 807,209 3/22/2017
1.6.11 28,269 3/14/2017
1.6.10 26,816 3/13/2017
1.6.9 47,688 3/2/2017
1.6.8 285,916 12/21/2016
1.6.7 154,060 11/25/2016
1.6.6 207,655 10/13/2016
1.6.5 120,485 9/24/2016
1.6.4 88,686 8/30/2016
1.6.3 101,347 8/19/2016
1.6.2 61,724 8/5/2016
1.6.1 677,604 7/27/2016
1.6.0 695,355 7/15/2016
1.5.9 36,219 7/11/2016
1.5.8 37,155 6/17/2016
1.5.7 25,558 5/30/2016
1.5.6 89,505 4/22/2016
1.5.5 16,268 4/14/2016
1.5.4 39,621 3/22/2016
1.5.3 293,639 11/6/2015
1.5.2 31,700 10/15/2015
1.5.1 2,356 10/14/2015
1.5.0 170,903 10/1/2015
1.4.7 1,960 10/1/2015
1.4.6 22,832 8/29/2015
1.4.5 29,805 7/24/2015
1.4.4 986 7/23/2015
1.4.3 36,154 5/27/2015
1.4.2 10,454 5/6/2015
1.4.1 21,826 4/14/2015
1.3.4 51,609 2/4/2015
1.3.3 3,326 1/28/2015
1.3.2 1,313 1/27/2015
1.3.1 6,719 1/13/2015
1.3.0 5,563 12/10/2014
1.2.2 4,315 11/24/2014
1.2.1 765 11/22/2014
1.2.0 3,568 11/17/2014
1.1.1 75,846 9/5/2014
1.1.0 2,121 9/3/2014
1.0.2 4,758 7/1/2014
1.0.1 5,008 6/30/2014
1.0.0 741 6/30/2014
0.9.1 1,855 6/12/2014
0.9.0 649 6/7/2014
0.8.3 697 5/23/2014
0.8.2 547 5/21/2014
0.8.1 1,250 5/17/2014
0.8.0 1,519 5/2/2014
0.7.5 634 4/10/2014
0.7.4 524 4/7/2014
0.7.3 528 4/4/2014
0.7.1 556 4/1/2014
0.7.0 674 3/22/2014
0.6.2 551 1/28/2014
0.6.1 513 1/27/2014
0.5.2 577 11/19/2013
0.5.1 571 11/12/2013
0.5.0 1,059 11/10/2013