ProlongExpirationTimeAttribute with Always Running ASP.NET App / HangfireBootstapper

I had a ProlongExpirationTimeAttribute set and working in my ASP.NET Web API 2 application, however ever since I followed the steps outlined for how to make sure the ASP.NET site runs 24/7 this has stopped working. Does anybody know how to set this option when you are starting hangfire via HangfireBootstrapper?

I have tried:


            Hangfire.GlobalConfiguration.Configuration.UseFilter(new ProlongExpirationTimeAttribute()); 


Hangfire.GlobalJobFilters.Filters.Add(new ProlongExpirationTimeAttribute());


public class ProlongExpirationTimeAttribute : JobFilterAttribute, IApplyStateFilter

    public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
        context.JobExpirationTimeout = TimeSpan.FromDays(7);

    public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
        context.JobExpirationTimeout = TimeSpan.FromDays(14);


I also tried appending it to the “UseSqlServerStorage” configuration in the Start() method.

public void Start()
        lock (_lockObject)
            if (_started) return;
            _started = true;


                .UseSqlServerStorage("Hangfire").UseFilter(new ProlongExpirationTimeAttribute());

            _backgroundJobServer = new BackgroundJobServer();


It is still set to 1 day. The only way I have been able to achieve this with the always running method is by building my own version of hangfire.core and changing this section of ApplyStateContext.cs

public ApplyStateContext(
        [NotNull] JobStorage storage,
        [NotNull] IStorageConnection connection,
        [NotNull] IWriteOnlyTransaction transaction,
        [NotNull] BackgroundJob backgroundJob,
        [NotNull] IState newState, 
        [CanBeNull] string oldStateName)
        if (storage == null) throw new ArgumentNullException(nameof(storage));
        if (connection == null) throw new ArgumentNullException(nameof(connection));
        if (transaction == null) throw new ArgumentNullException(nameof(transaction));
        if (backgroundJob == null) throw new ArgumentNullException(nameof(backgroundJob));
        if (newState == null) throw new ArgumentNullException(nameof(newState));
        BackgroundJob = backgroundJob;

        Storage = storage;
        Connection = connection;
        Transaction = transaction;
        OldStateName = oldStateName;
        NewState = newState;
        JobExpirationTimeout = TimeSpan.FromDays(7);