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


  • Added – Chinese language to Dashboard UI (by @andy-zhouyou).
  • Changed – Default upper limit of worker number is 20.
  • Changed – Default value for DashboardJobListLimit is now 10000.
  • Fixed – Deserialization exception in continuations, when TypeNameHandling.All option is used (by @MaksimSimkin).
  • Fixed – I18N is not working, because there are no localized resources in NuGet packages.
  • Fixed – Infinite redirect loops, when authenticated, but not authorized user accesses Dashboard UI.
  • Fixed – “The type … exists in both…” issue when building Hangfire, related to Newtonsoft.Json.
  • Fixed – Use the given type’s method, when scope variable is passed to a job expression.
  • Fixed – Very rare resource leaks detected by Coverity Scan.


  • Fixed – Different timeout issues after making performance optimisations.
  • Fixed – SQL timeouts while getting a connection, when using default settings and ≥ 8 CPU cores.
  • FixedExpirationManager is bloated by SqlError instances, when there are a lot of messages from server.
  • Fixed – Counters query returned inconsistent results during CountersAggregator executions.
  • Performance – Added missing NOLOCK hint for monitoring queries when using SqlServer-based queues.
  • PerformanceExpirationManager is forced to use index seek operations for cascade deletions.
  • PerformanceCountersAggregator now uses clustered index scan to issue less logical reads.
  • Performance – Paging queries in dashboard now use CTEs to utilize less logical reads.

Subscribe to monthly updates

Subscribe to receive monthly blog updates. Very low traffic, you are able to unsubscribe at any time.