Hangfire.Core
1.7.33
See the version list below for details.
dotnet add package Hangfire.Core --version 1.7.33
NuGet\Install-Package Hangfire.Core -Version 1.7.33
<PackageReference Include="Hangfire.Core" Version="1.7.33" />
paket add Hangfire.Core --version 1.7.33
#r "nuget: Hangfire.Core, 1.7.33"
// Install Hangfire.Core as a Cake Addin
#addin nuget:?package=Hangfire.Core&version=1.7.33
// Install Hangfire.Core as a Cake Tool
#tool nuget:?package=Hangfire.Core&version=1.7.33
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/
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows |
.NET Core | netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework | net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 net481 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen30 tizen40 tizen60 |
Universal Windows Platform | uap uap10.0 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.NETFramework 4.5
- Newtonsoft.Json (>= 5.0.1)
- Owin (>= 1.0.0)
-
.NETFramework 4.6
- Newtonsoft.Json (>= 5.0.1)
- Owin (>= 1.0.0)
-
.NETStandard 1.3
- NETStandard.Library (>= 1.6.0)
- Newtonsoft.Json (>= 9.0.1)
- System.Threading.Thread (>= 4.0.0)
- System.Threading.ThreadPool (>= 4.0.10)
-
.NETStandard 2.0
- Newtonsoft.Json (>= 11.0.1)
NuGet packages (345)
Showing the top 5 NuGet packages that depend on Hangfire.Core:
Package | 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). |
|
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/ |
|
Hangfire.MemoryStorage
A memory storage for Hangfire |
|
Hangfire.PostgreSql
PostgreSql storage implementation for Hangfire (background job system for ASP.NET and aspnet core applications). |
|
Hangfire.Console
Job console for Hangfire |
GitHub repositories (33)
Showing the top 5 popular GitHub repositories that depend on Hangfire.Core:
Repository | Stars |
---|---|
aspnetboilerplate/aspnetboilerplate
ASP.NET Boilerplate - Web Application Framework
|
|
MassTransit/MassTransit
Distributed Application Framework for .NET
|
|
elsa-workflows/elsa-core
A .NET workflows library
|
|
Xabaril/AspNetCore.Diagnostics.HealthChecks
Enterprise HealthChecks for ASP.NET Core Diagnostics Package
|
|
blazorhero/CleanArchitecture
Clean Architecture Template for Blazor WebAssembly Built with MudBlazor Components.
|
Version | Downloads | Last updated | |
---|---|---|---|
1.8.0-rc2 | 48,438 | 11/23/2022 | |
1.8.0-rc1 | 99,538 | 6/13/2022 | |
1.8.0-beta4 | 424,847 | 11/12/2021 | |
1.8.0-beta3 | 118,367 | 7/5/2021 | |
1.8.0-beta2 | 46,221 | 4/15/2021 | |
1.8.0-beta1 | 11,925 | 3/19/2021 | |
1.7.33 | 476,436 | 1/31/2023 | |
1.7.32 | 1,131,559 | 11/21/2022 | |
1.7.31 | 2,514,006 | 8/19/2022 | |
1.7.30 | 2,155,652 | 6/10/2022 | |
1.7.29 | 728,380 | 5/23/2022 | |
1.7.28 | 5,795,162 | 12/18/2021 | |
1.7.27 | 3,146,826 | 11/3/2021 | |
1.7.26 | 310,144 | 10/27/2021 | |
1.7.25 | 2,249,084 | 8/30/2021 | |
1.7.24 | 2,532,932 | 6/28/2021 | |
1.7.23 | 1,205,742 | 5/28/2021 | |
1.7.22 | 1,993,611 | 4/13/2021 | |
1.7.21 | 38,794 | 4/12/2021 | |
1.7.20 | 888,181 | 3/19/2021 | |
1.7.19 | 3,230,088 | 1/15/2021 | |
1.7.18 | 3,460,971 | 11/20/2020 | |
1.7.17 | 1,727,349 | 10/20/2020 | |
1.7.16 | 323,369 | 10/14/2020 | |
1.7.15 | 266,971 | 10/8/2020 | |
1.7.14 | 608,138 | 9/24/2020 | |
1.7.13 | 441,646 | 9/15/2020 | |
1.7.12 | 1,757,237 | 7/24/2020 | |
1.7.11 | 5,775,270 | 4/15/2020 | |
1.7.10 | 1,017,276 | 4/2/2020 | |
1.7.9 | 8,121,640 | 1/20/2020 | |
1.7.8 | 1,674,351 | 12/5/2019 | |
1.7.7 | 1,729,112 | 10/22/2019 | |
1.7.6 | 3,882,223 | 8/5/2019 | |
1.7.5 | 487,410 | 7/18/2019 | |
1.7.4 | 585,807 | 6/28/2019 | |
1.7.3 | 1,704,198 | 5/23/2019 | |
1.7.2 | 1,461,927 | 4/29/2019 | |
1.7.1 | 589,619 | 4/16/2019 | |
1.7.0 | 1,592,278 | 3/29/2019 | |
1.6.30 | 22,948 | 4/29/2021 | |
1.6.29 | 66,996 | 4/15/2020 | |
1.6.28 | 81,749 | 1/14/2020 | |
1.6.27 | 72,744 | 6/27/2019 | |
1.6.26 | 102,807 | 5/23/2019 | |
1.6.25 | 41,061 | 4/9/2019 | |
1.6.24 | 104,194 | 3/27/2019 | |
1.6.23 | 293,938 | 3/13/2019 | |
1.6.22 | 1,204,706 | 1/25/2019 | |
1.6.21 | 3,337,857 | 11/1/2018 | |
1.6.20 | 2,848,023 | 7/31/2018 | |
1.6.19 | 1,738,694 | 4/6/2018 | |
1.6.18 | 38,398 | 4/5/2018 | |
1.6.17 | 2,660,692 | 9/19/2017 | |
1.6.16 | 427,284 | 9/2/2017 | |
1.6.15 | 402,174 | 8/8/2017 | |
1.6.14 | 654,002 | 6/16/2017 | |
1.6.13 | 97,189 | 6/7/2017 | |
1.6.12 | 1,279,041 | 3/22/2017 | |
1.6.11 | 45,476 | 3/14/2017 | |
1.6.10 | 44,519 | 3/13/2017 | |
1.6.9 | 82,643 | 3/2/2017 | |
1.6.8 | 450,933 | 12/21/2016 | |
1.6.7 | 270,535 | 11/25/2016 | |
1.6.6 | 353,084 | 10/13/2016 | |
1.6.5 | 153,055 | 9/24/2016 | |
1.6.4 | 113,460 | 8/30/2016 | |
1.6.3 | 170,182 | 8/19/2016 | |
1.6.2 | 80,781 | 8/5/2016 | |
1.6.1 | 1,926,290 | 7/27/2016 | |
1.6.0 | 6,722,399 | 7/15/2016 | |
1.5.9 | 256,622 | 7/11/2016 | |
1.5.8 | 52,511 | 6/17/2016 | |
1.5.7 | 37,718 | 5/30/2016 | |
1.5.6 | 115,897 | 4/22/2016 | |
1.5.5 | 25,705 | 4/14/2016 | |
1.5.4 | 59,178 | 3/22/2016 | |
1.5.3 | 480,141 | 11/6/2015 | |
1.5.2 | 65,081 | 10/15/2015 | |
1.5.1 | 4,087 | 10/14/2015 | |
1.5.0 | 511,792 | 10/1/2015 | |
1.4.7 | 3,980 | 10/1/2015 | |
1.4.6 | 47,981 | 8/29/2015 | |
1.4.5 | 44,914 | 7/24/2015 | |
1.4.4 | 2,859 | 7/23/2015 | |
1.4.3 | 84,616 | 5/27/2015 | |
1.4.2 | 15,741 | 5/6/2015 | |
1.4.1 | 37,119 | 4/14/2015 | |
1.3.4 | 69,536 | 2/4/2015 | |
1.3.3 | 5,782 | 1/28/2015 | |
1.3.2 | 3,178 | 1/27/2015 | |
1.3.1 | 9,326 | 1/13/2015 | |
1.3.0 | 10,298 | 12/10/2014 | |
1.2.2 | 8,124 | 11/24/2014 | |
1.2.1 | 2,505 | 11/22/2014 | |
1.2.0 | 5,359 | 11/17/2014 | |
1.1.1 | 154,979 | 9/5/2014 | |
1.1.0 | 4,313 | 9/3/2014 | |
1.0.2 | 6,768 | 7/1/2014 | |
1.0.1 | 24,610 | 6/30/2014 | |
1.0.0 | 2,706 | 6/30/2014 | |
0.9.1 | 3,868 | 6/12/2014 | |
0.9.0 | 2,246 | 6/7/2014 | |
0.8.3 | 2,509 | 5/23/2014 | |
0.8.2 | 2,227 | 5/21/2014 | |
0.8.1 | 3,444 | 5/17/2014 | |
0.8.0 | 3,080 | 5/2/2014 | |
0.7.5 | 2,746 | 4/10/2014 | |
0.7.4 | 2,059 | 4/7/2014 | |
0.7.3 | 2,067 | 4/4/2014 | |
0.7.1 | 2,076 | 4/1/2014 | |
0.7.0 | 3,530 | 3/22/2014 | |
0.6.2 | 1,641 | 1/28/2014 | |
0.6.1 | 1,594 | 1/27/2014 | |
0.5.2 | 1,680 | 11/19/2013 | |
0.5.1 | 1,628 | 11/12/2013 | |
0.5.0 | 2,212 | 11/10/2013 |
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.32
• Added – First version of Swedish translation of the Dashboard UI (by @karl-sjogren).
• Changed – More detailed message for exception when `JobStorage.Current` is not initialized.
• Changed – Make `TypeHelperSerializationBinder` class public to use it from custom serializer settings.
• Fixed – Small typos in French resources for the Dashboard UI (by @agriffard).
• Fixed – Document the exception for the `IJobCancellationToken` interface method (by @judah4).
1.7.31
• Added – `RecurringJob.TriggerJob` method that returns identifier of a triggered background job.
• Added – `RecurringJobManager.TriggerJob` as a replacement for the `TriggerExecution` method.
• Changed – Update Moment.js library used by Dashboard UI to version 2.29.4 (by @mmitchell-w).
• Fixed – Typos in pt-BR translation (by @gumbarros and @marcelcamargo).
• Fixed – Added missing parameter annotations for methods of the `RecurringJob` class.
• Deprecated – `RecurringJob.Trigger` method is now obsolete, `TriggerJob` is the replacement.
• Deprecated – `RecurringJobManager.TriggerExecution` method is now obsolete, `TriggerJob` should be used instead.
1.7.30
• Fixed – Don't consider `SecurityException` as a non-catchable one.
• Fixed – Replace timer with a dedicated thread in `AspNetShutdownDetector` to avoid depending on thread pool.
• Fixed – Better ASP.NET shutdown detection with yet another check based on internal state.
• Fixed – Decrease `AspNetShutdownDetector`'s check intervals to detect shutdowns earlier.
• Fixed – Don't wait for server stop on AppDomain unloads when hosting in IIS to avoid delaying them.
1.7.29
• Added – `RecurringJobManager.TriggerExecution` method that returns identifier of a created job.
• Added – `GetRecurringJobIds` extension method for `JobStorageConnection` that returns only identifiers.
• Added – `DashboardMetric.Url` property to make it possible for metrics on the Overview page to be clickable.
• Changed – Bump Moment.js version to 2.29.3 in Dashboard UI (by @Westat-Transportation).
• Fixed – Deserialization issues with `DateOnly` and `TimeOnly` in .NET 6.0 or other new types in CoreLib.
• Fixed – Don't even try to catch unsafe exceptions like `OutOfMemoryException` or `StackOverflowException`.
• Fixed – Add non-breaking space between Server Id and Status glyph on the Servers page.
• Fixed – Problems with internal wait implementation shouldn't cause high CPU issues now, added protection and logging.
• Fixed – Wait can't be performed now on a signaled `ManualResetEvent` instance in `BackgroundExecution`.
1.7.28
• Fixed – Reduce the number of attempts in `BackgroundJobStateChanger` to avoid infinite loops.
• Fixed – Typos in German translation (by @saxx).
• Fixed – Translations in Turkish translation (by @can-zengin).
1.7.27
• Added – Turkish language support for the Dashboard UI (by @csarigul).
• Fixed – Trigger button in the Dashboard UI doesn't respect a custom time zone resolver.
• Fixed – Dispatchers stopped when unable to add the ExecutionId data for an exception instance.
• Fixed – Safari's zoom feature breaks the Dashboard UI (by @oguzhantopcu).
• Fixed – Some typos in XML documentation comments (by @GitHubPang).
1.7.26
• Security – Fix "Dashboard UI accessible from outside by default since 1.7.25" regression.
1.7.25
• Changed – Upgrade Bootstrap from 3.3.7 to version 3.4.1 in Dashboard UI.
• Changed – Upgrade Chart.js from 2.7.3 to version 2.9.4 in Dashboard UI.
• Changed – Upgrade jQuery from 2.2.4 to version 3.6.0 in Dashboard UI.
• Fixed – Check background job existence before adding a continuation id to job parameters.
• Fixed – Incorrect validation for the `HeartbeatInterval` option (by @GitHubPang).
• Fixed – Use better stacking for succeeded/failed charts in the Dashboard UI.
• Fixed – Move explicit styles to CSS to fix possible CSP errors in Dashboard UI.
• Fixed – Reset default sync auth filter when async one is specified in Dashboard UI.
1.7.24
• Added – Support for async auth methods via the `DashboardOptions.AsyncAuthorization` property (by @rosenbjerg).
• Fixed – Error alert in Dashboard UI is now correctly shown when sidebar is present (by @danillewin).
• Fixed – Reference an empty favicon in Dashboard UI to prevent backend 404s (by @dan2468).
• Fixed – Back-to-site link text in Dashboard UI is now hidden on small screens (by @danillewin).
• Fixed – Avoid memory leak in the `AppBuilderExtensions` class (by @LordJZ).
• Fixed – Make the `TypeHelper` class public instead of internal to use it outside.
1.7.23
• Added – `JobId` property to `JobPerformanceException` for error logging purposes (by @Plasma).
• Fixed – `JsonSerializationException` when using `IdempotentCompletionAttribute`.
• Fixed – Unreported yet corner case related to daylight time transition by upgrading Cronos to 0.7.1 (by @aidmsu).
• Fixed – Dashboard issue: recurring job table doesn't handle very long cron strings.
• Fixed – Add missing argument-is-null check for the `DeserializePayload` method.
• Project – Replace deprecated `PerformContext` ctor usage to avoid alerts in SonarQube (by @kumaheiyama).
• Project – Avoid possible `NullReferenceException` in tests to fix alerts in Fortify analyser.
• Project – Release connections properly in tests to fix alerts in Fortify analyser.
1.7.22
• Fixed – Fonts-related regression in Dashboard UI after upgrading Bootstrap in 1.7.21.
1.7.21
• Changed – Upgrade jQuery from 2.1.4 to 2.2.4 in Dashboard UI.
• Changed – Upgrade Bootstrap from 3.3.5 to 3.3.7 in Dashboard UI.
• Changed – Upgrade Moment.js to 2.29.1 in Dashboard UI.
• Project – Update RazorGenerator.MsBuild package from 2.4.7 to version 2.5.0.
• Project – Update 7-Zip.CommandLine package from 9.20.0 to version 18.1.0.
1.7.20
• Added – Norwegian translations (by @khellang).
• Fixed – Correction on brazilian portuguese translations (by @Prestini).
• Fixed – Changing time zone of recurring job without changing cron expression causes immediate execution.
1.7.19
• Added – German (Deutsch) Dashboard UI localization (by @d-oit).
• Added – `IGlobalConfiguration.UseMaxArgumentSizeToRender` method to avoid "VALUE TOO BIG" messages.
• Changed – Remove "readonly" keyword from the `JobMethodCallRenderer.MaxArgumentToRenderSize` field to support .NET 5.0.
• Fixed – Race condition in `AspNetShutdownDetector` leads to `NullReferenceException` (by @jr01).
• Fixed – Avoid ArgumentException: Item has already been added when preserving an original exception.
• Project – Add repository link to nuspec files (by @jeremyhayes).
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 @augustoproiete).
• 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 @augustoproiete).
• 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.