HangFire 1.7.13
Prefix ReservedSee the version list below for details.
dotnet add package HangFire --version 1.7.13
NuGet\Install-Package HangFire -Version 1.7.13
<PackageReference Include="HangFire" Version="1.7.13" />
paket add HangFire --version 1.7.13
#r "nuget: HangFire, 1.7.13"
// Install HangFire as a Cake Addin #addin nuget:?package=HangFire&version=1.7.13 // Install HangFire as a Cake Tool #tool nuget:?package=HangFire&version=1.7.13
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/
Learn more about Target Frameworks and .NET Standard.
-
.NETFramework 4.5
- Hangfire.Core (= 1.7.13)
- Hangfire.SqlServer (= 1.7.13)
- Microsoft.Owin.Host.SystemWeb (>= 3.0.0)
-
.NETStandard 1.3
- Hangfire.AspNetCore (= 1.7.13)
- Hangfire.Core (= 1.7.13)
- Hangfire.SqlServer (= 1.7.13)
-
.NETStandard 2.0
- Hangfire.AspNetCore (= 1.7.13)
- Hangfire.Core (= 1.7.13)
- Hangfire.SqlServer (= 1.7.13)
NuGet packages (201)
Showing the top 5 NuGet packages that depend on HangFire:
Package | Downloads |
---|---|
VirtoCommerce.Platform.Hangfire
Virto Commerce is a flexible B2B ecommerce solution that offers powerful tools for enterprise business users. https://virtocommerce.com |
|
N3O.Umbraco.Scheduler
TODO |
|
ImmediaC.SimpleCms
ASP.NET Core based CMS |
|
ComplianceAuditSystems.AcabimCommonServices
Package Description |
|
Bnsights.Mvc
Bnsights.Mvc is RAD Helper DLL for MVC Projects in Bnsights DMCC. Also known as Bnsights Business Solutions Framework (BBSF). |
GitHub repositories (26)
Showing the top 5 popular GitHub repositories that depend on HangFire:
Repository | Stars |
---|---|
elsa-workflows/elsa-core
A .NET workflows library
|
|
Kareadita/Kavita
Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.
|
|
fullstackhero/dotnet-starter-kit
Production Grade Cloud-Ready .NET 8 Starter Kit (Web API + Blazor Client) with Multitenancy Support, and Clean/Modular Architecture that saves roughly 200+ Development Hours! All Batteries Included.
|
|
fullstackhero/blazor-starter-kit
Clean Architecture Template for Blazor WebAssembly Built with MudBlazor Components.
|
|
dotnetcore/osharp
OSharp是一个基于.Net6.0的快速开发框架,框架对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、功能权限、数据权限等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net 框架更易于应用到实际项目开发中。
|
Version | Downloads | Last updated |
---|---|---|
1.8.15 | 114,191 | 10/23/2024 |
1.8.14 | 1,634,169 | 6/11/2024 |
1.8.12 | 1,265,083 | 4/3/2024 |
1.8.11 | 679,491 | 2/23/2024 |
1.8.10 | 238,426 | 2/12/2024 |
1.8.9 | 437,192 | 1/24/2024 |
1.8.7 | 445,645 | 12/29/2023 |
1.8.6 | 1,310,684 | 10/18/2023 |
1.8.5 | 1,172,516 | 8/11/2023 |
1.8.4 | 247,777 | 7/27/2023 |
1.8.3 | 575,217 | 6/27/2023 |
1.8.2 | 603,759 | 5/26/2023 |
1.8.1 | 171,959 | 5/18/2023 |
1.8.0 | 404,023 | 4/28/2023 |
1.7.37 | 56,254 | 4/8/2024 |
1.7.36 | 165,334 | 6/29/2023 |
1.7.35 | 28,403 | 5/18/2023 |
1.7.34 | 621,482 | 3/30/2023 |
1.7.33 | 1,261,471 | 1/31/2023 |
1.7.32 | 1,382,965 | 11/21/2022 |
1.7.31 | 2,275,902 | 8/19/2022 |
1.7.30 | 1,561,101 | 6/10/2022 |
1.7.29 | 344,654 | 5/23/2022 |
1.7.28 | 3,565,313 | 12/18/2021 |
1.7.27 | 1,043,275 | 11/3/2021 |
1.7.26 | 153,284 | 10/27/2021 |
1.7.25 | 1,214,048 | 8/30/2021 |
1.7.24 | 1,249,757 | 6/28/2021 |
1.7.23 | 699,789 | 5/28/2021 |
1.7.22 | 883,129 | 4/13/2021 |
1.7.21 | 15,218 | 4/12/2021 |
1.7.20 | 409,034 | 3/19/2021 |
1.7.19 | 1,443,598 | 1/15/2021 |
1.7.18 | 1,107,665 | 11/20/2020 |
1.7.17 | 583,581 | 10/20/2020 |
1.7.16 | 129,942 | 10/14/2020 |
1.7.15 | 77,790 | 10/8/2020 |
1.7.14 | 577,044 | 9/24/2020 |
1.7.13 | 149,449 | 9/15/2020 |
1.7.12 | 843,085 | 7/24/2020 |
1.7.11 | 2,481,489 | 4/15/2020 |
1.7.10 | 291,429 | 4/2/2020 |
1.7.9 | 2,281,424 | 1/20/2020 |
1.7.8 | 755,369 | 12/5/2019 |
1.7.7 | 841,193 | 10/22/2019 |
1.7.6 | 1,513,528 | 8/5/2019 |
1.7.5 | 337,061 | 7/18/2019 |
1.7.4 | 339,009 | 6/28/2019 |
1.7.3 | 659,889 | 5/23/2019 |
1.7.2 | 440,393 | 4/29/2019 |
1.7.1 | 414,609 | 4/16/2019 |
1.7.0 | 358,980 | 3/29/2019 |
1.6.30 | 36,695 | 4/29/2021 |
1.6.29 | 59,132 | 4/15/2020 |
1.6.28 | 79,666 | 1/14/2020 |
1.6.27 | 61,901 | 6/27/2019 |
1.6.26 | 75,787 | 5/23/2019 |
1.6.25 | 22,469 | 4/9/2019 |
1.6.24 | 125,250 | 3/27/2019 |
1.6.23 | 210,267 | 3/13/2019 |
1.6.22 | 668,091 | 1/25/2019 |
1.6.21 | 1,141,373 | 11/1/2018 |
1.6.20 | 1,141,534 | 7/31/2018 |
1.6.19 | 1,292,362 | 4/6/2018 |
1.6.18 | 27,927 | 4/5/2018 |
1.6.17 | 1,587,349 | 9/19/2017 |
1.6.16 | 167,436 | 9/2/2017 |
1.6.15 | 247,840 | 8/8/2017 |
1.6.14 | 316,885 | 6/16/2017 |
1.6.13 | 66,682 | 6/7/2017 |
1.6.12 | 570,986 | 3/22/2017 |
1.6.11 | 41,992 | 3/14/2017 |
1.6.10 | 11,975 | 3/13/2017 |
1.6.9 | 50,669 | 3/2/2017 |
1.6.8 | 377,135 | 12/21/2016 |
1.6.7 | 196,981 | 11/25/2016 |
1.6.6 | 183,608 | 10/13/2016 |
1.6.5 | 102,718 | 9/24/2016 |
1.6.4 | 82,068 | 8/30/2016 |
1.6.3 | 40,982 | 8/19/2016 |
1.6.2 | 51,249 | 8/5/2016 |
1.6.1 | 60,131 | 7/27/2016 |
1.6.0 | 43,129 | 7/15/2016 |
1.5.9 | 153,410 | 7/11/2016 |
1.5.8 | 55,124 | 6/17/2016 |
1.5.7 | 22,956 | 5/30/2016 |
1.5.6 | 62,455 | 4/22/2016 |
1.5.5 | 21,353 | 4/14/2016 |
1.5.4 | 50,025 | 3/22/2016 |
1.5.3 | 308,297 | 11/6/2015 |
1.5.2 | 27,412 | 10/15/2015 |
1.5.1 | 7,036 | 10/14/2015 |
1.5.0 | 55,919 | 10/1/2015 |
1.4.7 | 6,670 | 10/1/2015 |
1.4.6 | 27,624 | 8/29/2015 |
1.4.5 | 36,849 | 7/24/2015 |
1.4.4 | 5,997 | 7/23/2015 |
1.4.3 | 63,629 | 5/27/2015 |
1.4.2 | 14,046 | 5/6/2015 |
1.4.1 | 36,847 | 4/14/2015 |
1.3.4 | 60,476 | 2/4/2015 |
1.3.3 | 9,122 | 1/28/2015 |
1.3.2 | 6,394 | 1/27/2015 |
1.3.1 | 11,729 | 1/13/2015 |
1.3.0 | 12,314 | 12/10/2014 |
1.2.2 | 14,348 | 11/24/2014 |
1.2.1 | 5,951 | 11/22/2014 |
1.2.0 | 8,996 | 11/17/2014 |
1.1.1 | 27,245 | 9/5/2014 |
1.1.0 | 7,243 | 9/3/2014 |
1.0.2 | 9,906 | 7/1/2014 |
1.0.1 | 6,139 | 6/30/2014 |
1.0.0 | 6,310 | 6/30/2014 |
0.9.1 | 6,345 | 6/12/2014 |
0.9.0 | 4,697 | 6/7/2014 |
0.8.3 | 5,077 | 5/23/2014 |
0.8.2 | 4,654 | 5/21/2014 |
0.8.1 | 4,807 | 5/17/2014 |
0.8.0 | 6,470 | 5/2/2014 |
0.7.5 | 5,763 | 4/10/2014 |
0.7.4 | 4,895 | 4/7/2014 |
0.7.3 | 4,581 | 4/4/2014 |
0.7.2 | 4,869 | 4/4/2014 |
0.7.1 | 5,350 | 4/1/2014 |
0.7.0 | 5,075 | 3/22/2014 |
0.6.2 | 3,351 | 1/28/2014 |
0.6.1 | 3,312 | 1/27/2014 |
0.6.0 | 3,376 | 1/27/2014 |
0.5.2 | 3,334 | 11/19/2013 |
0.5.1 | 3,360 | 11/12/2013 |
0.5.0 | 4,808 | 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.13
Hangfire.Core
• 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).
Hangfire.SqlServer
• Added – `UseIgnoreDupKeyOption` for SQL Server storage configuration (changes to [Set] and [Hash] tables required).
• Fixed – Don't truncate too long keys silently, throw exceptions instead.
• Fixed – Add missing null checks for methods in the `SqlServerWriteOnlyTransaction` class.
• Fixed – Change `holdlock` hint to `xlock` in `merge` statements in transaction to prevent deadlocks.
• Fixed – Don't rethrow "Lock request time out period exceeded" exceptions from expiration manager.
• Fixed – Increase [Server].[Id] column's length to 200 for new installations.
1.7.12
Hangfire.Core
• 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
Hangfire.Core
• 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
Hangfire.Core
• 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).
Hangfire.SqlServer
• Changed – Use `XACT_ABORT` option for `ExpirationManager` queries.
• Changed – Don't rely on implicit rollback when disposing transactions.
• Fixed – `NullReferenceException` in logs thrown from `SqlInternalTransaction.Rollback` method.
1.7.9
Hangfire.Core
• 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.
Hangfire.SqlServer
• Changed – Implement long polling fetch for sub-second polling delays without `sp_getapplock`.
• Fixed – Don't leak `DbConnection` instance when an exception occurs during its opening.
• Fixed – Can not obtain connection from the pool exception after database was offline.
• Fixed – High number of waits in SQL Server when Hangfire Servers are idle.
Documentation
• Changed – Update "Making ASP.NET Applications Always Running" for .NET Core (by @unionthugface).
• Fixed – Fix typo in the README.md file (by @tawfikkh).
1.7.8
Hangfire.Core
• 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.
Hangfire.SqlServer
• Added – Support for Microsoft.Data.SqlClient package when using a custom connection factory (Part II).
• Fixed – Remove `System.Data.SqlClient` dependency from `SqlCommandBatch` and `ExpirationManager`.
Hangfire.AspNetCore
• Added – `IAppBuilder.MapHangfireDashboard` method for ASP.NET Core 3.0 endpoint routing (by @kendaleiv).
• Changed – Add explicit `netcoreapp3.0` target with "Microsoft.AspNetCore.App" framework reference (by @stebueh).
Hangfire.NetCore
• Changed – Add explicit `netcoreapp3.0` target with reference to "3.0.0" packages.
Documentation
• Added – Making ASP.NET Core application always running on IIS (by @bamotav).
• Fixed – Small typo on the "Getting Started in ASP.NET Core applications" page (by @msynk).
• Fixed – Small spelling correction in "Throttling & Rate Limiters" (by @Bert-R).
• Fixed – Small typo in the "Sending Email" tutorial (by @nabeelvalley).
• Fixed – Correct spelling of 'prerequisites' in README.md (by @lgirvin).
1.7.7
Hangfire.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.
Hangfire.SqlServer
• Added – Add support for Microsoft.Data.SqlClient package when using custom connection factory (Part I).
• Added – Add `UseFineGrainedLocks` option to avoid deadlocks in some theoretical cases.
• Added – Add missing overload for `UseSqlServerStorage` with connection factory parameter only.
• Added – Expose the SqlServerObjectsInstaller.GetInstallScript method (by @altso).
• Fixed – Make command batching working on .NET Core when using System.Data.SqlClient 4.7.0 and higher.
• Fixed – Permit dash characters (`-`) in schema names (by @kendaleiv).
• Fixed – Escape square bracket characters in schema names.
• Project – Add support for `netcoreapp3.0` target in Hangfire.SqlServer.Tests.
• Project – Take schema name from constant in Hangfire.SqlServer.Tests (by @kendaleiv).
• Project – Make Hangfire.SqlServer.Tests work on Linux in Travis CI environment.
Hangfire.AspNetCore
• Fixed – Add missing `AddHangfireServer` method for .NET Framework 4.6.1 and higher (by @danstur).
1.7.6
Hangfire.Core
• 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
Hangfire.Core
• 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.
Hangfire.AspNetCore & Hangfire.NetCore
• Fixed – Add missing overload for the `AddHangfireServer` method with "options" action.
1.7.4
Hangfire.Core
• 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.
Hangfire.SqlServer
• Fixed – Potential deadlocks cause by suboptimal queries when using `SlidingInvisibilityTimeout` fetching.
• Fixed – Prevent zero delays between fetch retry attempts when lock acquisition failed without blocking.
• Fixed – Specify float precision explicitly for the `Score` column in the `AddToSet` method.
1.7.3
Hangfire.Core
• 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.
Hangfire.SqlServer
• Fixed – Wrong error message in migration script, when @CurrentSchemaVersion has a NULL value (by @penenkel).
1.7.2
Hangfire.Core
• 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.
Hangfire.AspNetCore & Hangfire.NetCore
• Added – Automatically resolve `ITimeZoneResolver` service for the `DashboardOptions.TimeZoneResolver` property.
• Fixed – Allow to resolve `IJobFilterProvider` service from the `AddHangfire` method.
Hangfire.SqlServer
• Fixed – Occasional "DataException: Error parsing column" error when using blocking fetch.
1.7.1
Hangfire.Core
• 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.
Hangfire.NetCore
• Added – Worker Service host support for .NET Core without unnecessary dependencies to ASP.NET Core.
Hangfire.SqlServer
• Changed – Use blocking fetch implementation only for sub-second polling intervals.
• Fixed – Don't fail with an exception when can't connect to MSSQL instance during start-up.
• Fixed – Don't access the `JobQueue` table when using blocking query and don't have results.
1.7.0
Hangfire.Core
• 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.
Hangfire.AspNetCore
• Added – Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0.
• Added – An overloaded AddHangfire method with `IServiceProvider` parameter (by @ericgreenmix and @denis-ivanov).
• Added – `BackgroundJobServerHostedService` class based on `IHostedService` interface.
• Added – `IServiceCollection.AddHangfireServer` method to register the server during configuration.
• Changed – Custom services for factory, performer and state changer interfaces will be picked up only when all of them registered.
Hangfire.SqlServer
• Added – Full .NET Core 2.0 support by explicitly targeting .NET Standard 2.0.
• Added – `Schema 7` migration to fix the `IX_HangFire_Set_Score` index to include the `Key` column.
• Added – `Schema 6` migration with less indexes, better physical layout and `bigint` support (disabled by default).
• Added – Blocking fetch support for sliding expiration-based fetch to avoid excessive polling.
• Added – `SqlServerStorageOptions.EnableHeavyMigrations` switch to automatically install even heavy migrations.
• Added – `SqlServerStorageOptions.DisableGlobalLocks` property to avoid custom locking scheme.
• Added – `SqlServerStorageOptions.UsePageLocksOnDequeue` property to use less CPU consuming fetch.
• Added – Callback method to allow to open the database with impersonation (by @BjoernHund).
• Added – `SqlServerStorageOptions.UseRecommendedIsolationLevel` option to set the minimum possible level.
• Changed – Identity columns either converted to the `bigint` type, or entirely removed.
• Changed – Clustered indexes were organized according to the access patterns of their tables.
• Changed – Most of secondary indexes were either removed or made filtered.
• Changed – Optimize sliding-expiration-based fetching to use even less CPU time.
• Changed – Use write reordering and fine-grained locking scheme to improve parallelism.
• Changed – Monitoring API doesn't check state data to see state transition time.
• Changed – Allow to use zero-based poll interval when sliding invisibility timeout.
• Changed – Short paths for the `CreateExpiredJob` method to avoid some round-trips.
• Changed – Set `SqlParameter` types explicitly to not to duplicate query plans.
• Changed – Batch support for `AddToQueue` method when default provider is used.
• Changed – Check `FetchedAt` has expected value to prevent prolonging others' work.
• Changed – Use more recent Dapper 1.50.7 on all platforms except .NET Framework 4.5.
• Changed – Dapper package is internalized now even on .NET Core to avoid possible conflicts.
• Fixed – Avoid unnecessary waits in state changer when job was already expired.
• Fixed – Cannot resolve the collation conflict in `CountersAggregator`.
• Fixed – Background processing stops when identity columns exceed the `Int32.MaxValue`.
• Fixed – Slowdown of scheduled jobs due to the missing index on the `[Set]` table.