Full Code of HangfireIO/Hangfire for AI

main 333bd8eb2284 cached
595 files
4.3 MB
1.2M tokens
4610 symbols
1 requests
Download .txt
Showing preview only (4,596K chars total). Download the full file or copy to clipboard to get everything.
Repository: HangfireIO/Hangfire
Branch: main
Commit: 333bd8eb2284
Files: 595
Total size: 4.3 MB

Directory structure:
gitextract_a8bklu6g/

├── .editorconfig
├── .gitattributes
├── .gitignore
├── .nuget/
│   ├── packages.config
│   └── packages.lock.json
├── CONTRIBUTING.md
├── COPYING
├── COPYING.LESSER
├── Directory.Build.props
├── Hangfire.sln
├── Hangfire.sln.DotSettings
├── LICENSE.md
├── LICENSE_ROYALTYFREE
├── LICENSE_STANDARD
├── NOTICES
├── NuGet.config
├── README.md
├── SECURITY.md
├── appveyor.yml
├── build.bat
├── build.sh
├── coverity-scan.ps1
├── nuspecs/
│   ├── Hangfire.AspNetCore.nuspec
│   ├── Hangfire.Core.nuspec
│   ├── Hangfire.NetCore.nuspec
│   ├── Hangfire.SqlServer.MSMQ.nuspec
│   ├── Hangfire.SqlServer.nuspec
│   └── Hangfire.nuspec
├── psake-project.ps1
├── samples/
│   ├── ConsoleSample/
│   │   ├── ConsoleSample.csproj
│   │   ├── GenericServices.cs
│   │   ├── NewFeatures.cs
│   │   ├── Program.cs
│   │   ├── Services.cs
│   │   ├── Startup.cs
│   │   ├── app.config
│   │   └── packages.lock.json
│   └── NetCoreSample/
│       ├── NetCoreSample.csproj
│       ├── Program.cs
│       └── packages.lock.json
├── src/
│   ├── Directory.Build.props
│   ├── Hangfire.AspNetCore/
│   │   ├── Dashboard/
│   │   │   ├── AspNetCoreDashboardContext.cs
│   │   │   ├── AspNetCoreDashboardContextExtensions.cs
│   │   │   ├── AspNetCoreDashboardMiddleware.cs
│   │   │   ├── AspNetCoreDashboardRequest.cs
│   │   │   └── AspNetCoreDashboardResponse.cs
│   │   ├── Hangfire.AspNetCore.csproj
│   │   ├── HangfireApplicationBuilderExtensions.cs
│   │   ├── HangfireEndpointRouteBuilderExtensions.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   └── packages.lock.json
│   ├── Hangfire.Core/
│   │   ├── AppBuilderExtensions.cs
│   │   ├── App_Packages/
│   │   │   ├── LibLog.1.4/
│   │   │   │   └── LibLog.cs
│   │   │   ├── StackTraceFormatter/
│   │   │   │   └── StackTraceFormatter.cs
│   │   │   └── StackTraceParser/
│   │   │       └── StackTraceParser.cs
│   │   ├── AttemptsExceededAction.cs
│   │   ├── AutomaticRetryAttribute.cs
│   │   ├── BackgroundJob.Instance.cs
│   │   ├── BackgroundJob.cs
│   │   ├── BackgroundJobClient.cs
│   │   ├── BackgroundJobClientException.cs
│   │   ├── BackgroundJobClientExtensions.cs
│   │   ├── BackgroundJobServer.cs
│   │   ├── BackgroundJobServerOptions.cs
│   │   ├── CaptureCultureAttribute.cs
│   │   ├── Client/
│   │   │   ├── BackgroundJobFactory.cs
│   │   │   ├── ClientExceptionContext.cs
│   │   │   ├── CoreBackgroundJobFactory.cs
│   │   │   ├── CreateContext.cs
│   │   │   ├── CreatedContext.cs
│   │   │   ├── CreatingContext.cs
│   │   │   ├── IBackgroundJobFactory.cs
│   │   │   ├── IClientExceptionFilter.cs
│   │   │   └── IClientFilter.cs
│   │   ├── Common/
│   │   │   ├── CachedExpressionCompiler.cs
│   │   │   ├── CancellationTokenExtentions.cs
│   │   │   ├── ExpressionUtil/
│   │   │   │   ├── BinaryExpressionFingerprint.cs
│   │   │   │   ├── CachedExpressionCompiler.cs
│   │   │   │   ├── ConditionalExpressionFingerprint.cs
│   │   │   │   ├── ConstantExpressionFingerprint.cs
│   │   │   │   ├── DefaultExpressionFingerprint.cs
│   │   │   │   ├── ExpressionFingerprint.cs
│   │   │   │   ├── ExpressionFingerprintChain.cs
│   │   │   │   ├── FingerprintingExpressionVisitor.cs
│   │   │   │   ├── HashCodeCombiner.cs
│   │   │   │   ├── Hoisted.cs
│   │   │   │   ├── HoistingExpressionVisitor.cs
│   │   │   │   ├── IndexExpressionFingerprint.cs
│   │   │   │   ├── LambdaExpressionFingerprint.cs
│   │   │   │   ├── MemberExpressionFingerprint.cs
│   │   │   │   ├── MethodCallExpressionFingerprint.cs
│   │   │   │   ├── ParameterExpressionFingerprint.cs
│   │   │   │   ├── TypeBinaryExpressionFingerprint.cs
│   │   │   │   └── UnaryExpressionFingerprint.cs
│   │   │   ├── IJobFilter.cs
│   │   │   ├── IJobFilterProvider.cs
│   │   │   ├── Job.cs
│   │   │   ├── JobFilter.cs
│   │   │   ├── JobFilterAttribute.cs
│   │   │   ├── JobFilterAttributeFilterProvider.cs
│   │   │   ├── JobFilterCollection.cs
│   │   │   ├── JobFilterInfo.cs
│   │   │   ├── JobFilterProviderCollection.cs
│   │   │   ├── JobFilterProviders.cs
│   │   │   ├── JobFilterScope.cs
│   │   │   ├── JobHelper.cs
│   │   │   ├── JobLoadException.cs
│   │   │   ├── LanguagePolyfills.cs
│   │   │   ├── MethodInfoExtensions.cs
│   │   │   ├── ReflectedAttributeCache.cs
│   │   │   ├── SerializationHelper.cs
│   │   │   ├── ShallowExceptionHelper.cs
│   │   │   ├── TypeExtensions.cs
│   │   │   ├── TypeHelper.cs
│   │   │   └── TypeHelperSerializationBinder.cs
│   │   ├── ContinuationsSupportAttribute.cs
│   │   ├── Cron.cs
│   │   ├── Dashboard/
│   │   │   ├── BatchCommandDispatcher.cs
│   │   │   ├── CombinedResourceDispatcher.cs
│   │   │   ├── CommandDispatcher.cs
│   │   │   ├── Content/
│   │   │   │   ├── css/
│   │   │   │   │   ├── hangfire-dark.css
│   │   │   │   │   └── hangfire.css
│   │   │   │   ├── js/
│   │   │   │   │   └── hangfire.js
│   │   │   │   └── resx/
│   │   │   │       ├── Strings.Designer.cs
│   │   │   │       ├── Strings.ca.resx
│   │   │   │       ├── Strings.de.resx
│   │   │   │       ├── Strings.es.resx
│   │   │   │       ├── Strings.fa.resx
│   │   │   │       ├── Strings.fr.resx
│   │   │   │       ├── Strings.nb.resx
│   │   │   │       ├── Strings.nl.resx
│   │   │   │       ├── Strings.pt-BR.resx
│   │   │   │       ├── Strings.pt-PT.resx
│   │   │   │       ├── Strings.pt.resx
│   │   │   │       ├── Strings.resx
│   │   │   │       ├── Strings.sv.resx
│   │   │   │       ├── Strings.tr-TR.resx
│   │   │   │       ├── Strings.zh-TW.resx
│   │   │   │       └── Strings.zh.resx
│   │   │   ├── DashboardContext.cs
│   │   │   ├── DashboardMetric.cs
│   │   │   ├── DashboardMetrics.cs
│   │   │   ├── DashboardRequest.cs
│   │   │   ├── DashboardResponse.cs
│   │   │   ├── DashboardRoutes.cs
│   │   │   ├── EmbeddedResourceDispatcher.cs
│   │   │   ├── HtmlHelper.cs
│   │   │   ├── IDashboardAsyncAuthorizationFilter.cs
│   │   │   ├── IDashboardAuthorizationFilter.cs
│   │   │   ├── IDashboardDispatcher.cs
│   │   │   ├── JobDetailsRenderer.cs
│   │   │   ├── JobHistoryRenderer.cs
│   │   │   ├── JobMethodCallRenderer.cs
│   │   │   ├── JobsSidebarMenu.cs
│   │   │   ├── JsonStats.cs
│   │   │   ├── LocalRequestsOnlyAuthorizationFilter.cs
│   │   │   ├── MenuItem.cs
│   │   │   ├── Metric.cs
│   │   │   ├── NavigationMenu.cs
│   │   │   ├── NonEscapedString.cs
│   │   │   ├── Owin/
│   │   │   │   ├── IOwinDashboardAntiforgery.cs
│   │   │   │   ├── MiddlewareExtensions.cs
│   │   │   │   ├── OwinDashboardContext.cs
│   │   │   │   ├── OwinDashboardContextExtensions.cs
│   │   │   │   ├── OwinDashboardRequest.cs
│   │   │   │   └── OwinDashboardResponse.cs
│   │   │   ├── Pager.cs
│   │   │   ├── Pages/
│   │   │   │   ├── AwaitingJobsPage.cshtml
│   │   │   │   ├── AwaitingJobsPage.cshtml.cs
│   │   │   │   ├── DeletedJobsPage.cshtml
│   │   │   │   ├── DeletedJobsPage.cshtml.cs
│   │   │   │   ├── EnqueuedJobsPage.cs
│   │   │   │   ├── EnqueuedJobsPage.cshtml
│   │   │   │   ├── EnqueuedJobsPage.cshtml.cs
│   │   │   │   ├── FailedJobsPage.cshtml
│   │   │   │   ├── FailedJobsPage.cshtml.cs
│   │   │   │   ├── FetchedJobsPage.cs
│   │   │   │   ├── FetchedJobsPage.cshtml
│   │   │   │   ├── FetchedJobsPage.cshtml.cs
│   │   │   │   ├── HomePage.cs
│   │   │   │   ├── HomePage.cshtml
│   │   │   │   ├── HomePage.cshtml.cs
│   │   │   │   ├── JobDetailsPage.cs
│   │   │   │   ├── JobDetailsPage.cshtml
│   │   │   │   ├── JobDetailsPage.cshtml.cs
│   │   │   │   ├── LayoutPage.cs
│   │   │   │   ├── LayoutPage.cshtml
│   │   │   │   ├── LayoutPage.cshtml.cs
│   │   │   │   ├── ProcessingJobsPage.cshtml
│   │   │   │   ├── ProcessingJobsPage.cshtml.cs
│   │   │   │   ├── QueuesPage.cshtml
│   │   │   │   ├── QueuesPage.cshtml.cs
│   │   │   │   ├── RecurringJobsPage.cshtml
│   │   │   │   ├── RecurringJobsPage.cshtml.cs
│   │   │   │   ├── RetriesPage.cshtml
│   │   │   │   ├── RetriesPage.cshtml.cs
│   │   │   │   ├── ScheduledJobsPage.cshtml
│   │   │   │   ├── ScheduledJobsPage.cshtml.cs
│   │   │   │   ├── ServersPage.cshtml
│   │   │   │   ├── ServersPage.cshtml.cs
│   │   │   │   ├── SucceededJobs.cshtml
│   │   │   │   ├── SucceededJobs.cshtml.cs
│   │   │   │   ├── _BlockMetric.cs
│   │   │   │   ├── _BlockMetric.cshtml
│   │   │   │   ├── _BlockMetric.cshtml.cs
│   │   │   │   ├── _Breadcrumbs.cs
│   │   │   │   ├── _Breadcrumbs.cshtml
│   │   │   │   ├── _Breadcrumbs.cshtml.cs
│   │   │   │   ├── _ErrorAlert.cshtml
│   │   │   │   ├── _ErrorAlert.cshtml.cs
│   │   │   │   ├── _InlineMetric.cs
│   │   │   │   ├── _InlineMetric.cshtml
│   │   │   │   ├── _InlineMetric.cshtml.cs
│   │   │   │   ├── _Navigation.cshtml
│   │   │   │   ├── _Navigation.cshtml.cs
│   │   │   │   ├── _Paginator.cs
│   │   │   │   ├── _Paginator.cshtml
│   │   │   │   ├── _Paginator.cshtml.cs
│   │   │   │   ├── _PerPageSelector.cs
│   │   │   │   ├── _PerPageSelector.cshtml
│   │   │   │   ├── _PerPageSelector.cshtml.cs
│   │   │   │   ├── _SidebarMenu.cs
│   │   │   │   ├── _SidebarMenu.cshtml
│   │   │   │   └── _SidebarMenu.cshtml.cs
│   │   │   ├── RazorPage.cs
│   │   │   ├── RazorPageDispatcher.cs
│   │   │   ├── RouteCollection.cs
│   │   │   ├── RouteCollectionExtensions.cs
│   │   │   └── UrlHelper.cs
│   │   ├── DashboardOptions.cs
│   │   ├── DisableConcurrentExecutionAttribute.cs
│   │   ├── ExceptionInfo.cs
│   │   ├── ExceptionTypeHelper.cs
│   │   ├── FromParameterAttribute.cs
│   │   ├── FromResultAttribute.cs
│   │   ├── GlobalConfiguration.cs
│   │   ├── GlobalConfigurationExtensions.cs
│   │   ├── GlobalJobFilters.cs
│   │   ├── GlobalStateHandlers.cs
│   │   ├── Hangfire.Core.csproj
│   │   ├── IBackgroundJobClient.cs
│   │   ├── IGlobalConfiguration.cs
│   │   ├── IJobCancellationToken.cs
│   │   ├── IRecurringJobManager.cs
│   │   ├── ITimeZoneResolver.cs
│   │   ├── IdempotentCompletionAttribute.cs
│   │   ├── JobActivator.cs
│   │   ├── JobActivatorContext.cs
│   │   ├── JobActivatorScope.cs
│   │   ├── JobCancellationToken.cs
│   │   ├── JobCancellationTokenExtensions.cs
│   │   ├── JobContinuationOptions.cs
│   │   ├── JobDisplayNameAttribute.cs
│   │   ├── JobParameterInjectionFilter.cs
│   │   ├── JobStorage.cs
│   │   ├── LatencyTimeoutAttribute.cs
│   │   ├── MisfireHandlingMode.cs
│   │   ├── MoreLinq/
│   │   │   └── MoreEnumerable.Pairwise.cs
│   │   ├── Obsolete/
│   │   │   ├── BootstrapperConfigurationExtensions.cs
│   │   │   ├── CreateJobFailedException.cs
│   │   │   ├── DashboardMiddleware.cs
│   │   │   ├── DashboardOwinExtensions.cs
│   │   │   ├── IAuthorizationFilter.cs
│   │   │   ├── IBootstrapperConfiguration.cs
│   │   │   ├── IRequestDispatcher.cs
│   │   │   ├── IServerComponent.cs
│   │   │   ├── IServerProcess.cs
│   │   │   ├── Job.Obsolete.cs
│   │   │   ├── OwinBootstrapper.cs
│   │   │   ├── RequestDispatcherContext.cs
│   │   │   ├── RequestDispatcherWrapper.cs
│   │   │   ├── ServerOwinExtensions.cs
│   │   │   ├── ServerWatchdogOptions.cs
│   │   │   ├── StartupConfiguration.cs
│   │   │   └── StateContext.cs
│   │   ├── Processing/
│   │   │   ├── AppDomainUnloadMonitor.cs
│   │   │   ├── BackgroundDispatcher.cs
│   │   │   ├── BackgroundDispatcherAsync.cs
│   │   │   ├── BackgroundExecution.cs
│   │   │   ├── BackgroundExecutionOptions.cs
│   │   │   ├── BackgroundTaskScheduler.cs
│   │   │   ├── IBackgroundDispatcher.cs
│   │   │   ├── IBackgroundExecution.cs
│   │   │   ├── InlineSynchronizationContext.cs
│   │   │   └── TaskExtensions.cs
│   │   ├── Profiling/
│   │   │   ├── EmptyProfiler.cs
│   │   │   ├── IProfiler.cs
│   │   │   ├── ProfilerExtensions.cs
│   │   │   └── SlowLogProfiler.cs
│   │   ├── Properties/
│   │   │   ├── Annotations.cs
│   │   │   ├── AssemblyInfo.cs
│   │   │   └── NamespaceDoc.cs
│   │   ├── QueueAttribute.cs
│   │   ├── Razor.build
│   │   ├── RecurringJob.cs
│   │   ├── RecurringJobEntity.cs
│   │   ├── RecurringJobExtensions.cs
│   │   ├── RecurringJobManager.cs
│   │   ├── RecurringJobManagerExtensions.cs
│   │   ├── RecurringJobOptions.cs
│   │   ├── Server/
│   │   │   ├── AspNetShutdownDetector.cs
│   │   │   ├── BackgroundJobPerformer.cs
│   │   │   ├── BackgroundProcessContext.cs
│   │   │   ├── BackgroundProcessDispatcherBuilder.cs
│   │   │   ├── BackgroundProcessDispatcherBuilderAsync.cs
│   │   │   ├── BackgroundProcessExtensions.cs
│   │   │   ├── BackgroundProcessingServer.cs
│   │   │   ├── BackgroundProcessingServerOptions.cs
│   │   │   ├── BackgroundServerContext.cs
│   │   │   ├── BackgroundServerProcess.cs
│   │   │   ├── CoreBackgroundJobPerformer.cs
│   │   │   ├── DelayedJobScheduler.cs
│   │   │   ├── IBackgroundJobPerformer.cs
│   │   │   ├── IBackgroundProcess.cs
│   │   │   ├── IBackgroundProcessAsync.cs
│   │   │   ├── IBackgroundProcessDispatcherBuilder.cs
│   │   │   ├── IBackgroundProcessingServer.cs
│   │   │   ├── IBackgroundServerProcess.cs
│   │   │   ├── IServerExceptionFilter.cs
│   │   │   ├── IServerFilter.cs
│   │   │   ├── JobAbortedException.cs
│   │   │   ├── JobPerformanceException.cs
│   │   │   ├── PerformContext.cs
│   │   │   ├── PerformedContext.cs
│   │   │   ├── PerformingContext.cs
│   │   │   ├── RecurringJobScheduler.cs
│   │   │   ├── ServerContext.cs
│   │   │   ├── ServerExceptionContext.cs
│   │   │   ├── ServerHeartbeatProcess.cs
│   │   │   ├── ServerJobCancellationToken.cs
│   │   │   ├── ServerJobCancellationWatcher.cs
│   │   │   ├── ServerProcessDispatcherBuilder.cs
│   │   │   ├── ServerWatchdog.cs
│   │   │   └── Worker.cs
│   │   ├── States/
│   │   │   ├── ApplyStateContext.cs
│   │   │   ├── AwaitingState.cs
│   │   │   ├── BackgroundJobStateChanger.cs
│   │   │   ├── CoreStateMachine.cs
│   │   │   ├── DeletedState.cs
│   │   │   ├── ElectStateContext.cs
│   │   │   ├── EnqueuedState.cs
│   │   │   ├── FailedState.cs
│   │   │   ├── IApplyStateFilter.cs
│   │   │   ├── IBackgroundJobStateChanger.cs
│   │   │   ├── IElectStateFilter.cs
│   │   │   ├── IState.cs
│   │   │   ├── IStateHandler.cs
│   │   │   ├── IStateMachine.cs
│   │   │   ├── ProcessingState.cs
│   │   │   ├── ScheduledState.cs
│   │   │   ├── StateChangeContext.cs
│   │   │   ├── StateHandlerCollection.cs
│   │   │   ├── StateMachine.cs
│   │   │   └── SucceededState.cs
│   │   ├── StatisticsHistoryAttribute.cs
│   │   ├── Storage/
│   │   │   ├── BackgroundServerGoneException.cs
│   │   │   ├── DistributedLockTimeoutException.cs
│   │   │   ├── IFetchedJob.cs
│   │   │   ├── IMonitoringApi.cs
│   │   │   ├── IStorageConnection.cs
│   │   │   ├── IWriteOnlyTransaction.cs
│   │   │   ├── InvocationData.cs
│   │   │   ├── JobData.cs
│   │   │   ├── JobStorageConnection.cs
│   │   │   ├── JobStorageFeatures.cs
│   │   │   ├── JobStorageMonitor.cs
│   │   │   ├── JobStorageTransaction.cs
│   │   │   ├── Monitoring/
│   │   │   │   ├── AwaitingJobDto.cs
│   │   │   │   ├── DeletedJobDto.cs
│   │   │   │   ├── EnqueuedJobDto.cs
│   │   │   │   ├── FailedJobDto.cs
│   │   │   │   ├── FetchedJobDto.cs
│   │   │   │   ├── JobDetailsDto.cs
│   │   │   │   ├── JobList.cs
│   │   │   │   ├── ProcessingJobDto.cs
│   │   │   │   ├── QueueWithTopEnqueuedJobsDto.cs
│   │   │   │   ├── ScheduledJobDto.cs
│   │   │   │   ├── ServerDto.cs
│   │   │   │   ├── StateHistoryDto.cs
│   │   │   │   ├── StatisticsDto.cs
│   │   │   │   └── SucceededJobDto.cs
│   │   │   ├── RecurringJobDto.cs
│   │   │   ├── StateData.cs
│   │   │   └── StorageConnectionExtensions.cs
│   │   └── packages.lock.json
│   ├── Hangfire.NetCore/
│   │   ├── AspNetCore/
│   │   │   ├── AspNetCoreJobActivator.cs
│   │   │   ├── AspNetCoreJobActivatorScope.cs
│   │   │   ├── AspNetCoreLog.cs
│   │   │   └── AspNetCoreLogProvider.cs
│   │   ├── BackgroundJobServerHostedService.cs
│   │   ├── BackgroundProcessingServerHostedService.cs
│   │   ├── DefaultClientManagerFactory.cs
│   │   ├── Hangfire.NetCore.csproj
│   │   ├── HangfireServiceCollectionExtensions.cs
│   │   ├── IBackgroundJobClientFactory.cs
│   │   ├── IRecurringJobManagerFactory.cs
│   │   └── packages.lock.json
│   ├── Hangfire.SqlServer/
│   │   ├── Constants.cs
│   │   ├── CountersAggregator.cs
│   │   ├── DbCommandExtensions.cs
│   │   ├── DefaultInstall.sql
│   │   ├── DefaultInstall.tt
│   │   ├── EnqueuedAndFetchedCountDto.cs
│   │   ├── Entities/
│   │   │   ├── JobParameter.cs
│   │   │   ├── Server.cs
│   │   │   ├── ServerData.cs
│   │   │   ├── SqlHash.cs
│   │   │   ├── SqlJob.cs
│   │   │   └── SqlState.cs
│   │   ├── ExceptionTypeHelper.cs
│   │   ├── ExpirationManager.cs
│   │   ├── Hangfire.SqlServer.csproj
│   │   ├── IPersistentJobQueue.cs
│   │   ├── IPersistentJobQueueMonitoringApi.cs
│   │   ├── IPersistentJobQueueProvider.cs
│   │   ├── Install.sql
│   │   ├── PersistentJobQueueProviderCollection.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── SqlCommandBatch.cs
│   │   ├── SqlCommandSet.cs
│   │   ├── SqlServerBootstrapperConfigurationExtensions.cs
│   │   ├── SqlServerConnection.cs
│   │   ├── SqlServerDistributedLock.cs
│   │   ├── SqlServerDistributedLockException.cs
│   │   ├── SqlServerHeartbeatProcess.cs
│   │   ├── SqlServerJobQueue.cs
│   │   ├── SqlServerJobQueueMonitoringApi.cs
│   │   ├── SqlServerJobQueueProvider.cs
│   │   ├── SqlServerMonitoringApi.cs
│   │   ├── SqlServerObjectsInstaller.cs
│   │   ├── SqlServerStorage.cs
│   │   ├── SqlServerStorageExtensions.cs
│   │   ├── SqlServerStorageOptions.cs
│   │   ├── SqlServerTimeoutJob.cs
│   │   ├── SqlServerTransactionJob.cs
│   │   ├── SqlServerWriteOnlyTransaction.cs
│   │   ├── TimestampHelper.cs
│   │   └── packages.lock.json
│   ├── Hangfire.SqlServer.Msmq/
│   │   ├── Hangfire.SqlServer.Msmq.csproj
│   │   ├── IMsmqTransaction.cs
│   │   ├── MessageQueueExtensions.cs
│   │   ├── MsmqDtcTransaction.cs
│   │   ├── MsmqExtensions.cs
│   │   ├── MsmqFetchedJob.cs
│   │   ├── MsmqInternalTransaction.cs
│   │   ├── MsmqJobQueue.cs
│   │   ├── MsmqJobQueueMonitoringApi.cs
│   │   ├── MsmqJobQueueProvider.cs
│   │   ├── MsmqSqlServerStorageExtensions.cs
│   │   ├── MsmqTransactionType.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   └── packages.lock.json
│   └── SharedAssemblyInfo.cs
└── tests/
    ├── Directory.Build.props
    ├── Hangfire.Core.Tests/
    │   ├── BackgroundJobClientExtensionsFacts.cs
    │   ├── BackgroundJobClientFacts.cs
    │   ├── BackgroundJobFacts.cs
    │   ├── BackgroundJobServerFacts.cs
    │   ├── CaptureCultureAttributeFacts.cs
    │   ├── Client/
    │   │   ├── BackgroundJobFactoryFacts.cs
    │   │   ├── ClientExceptionContextFacts.cs
    │   │   ├── CoreBackgroundJobFactoryFacts.cs
    │   │   ├── CreateContextFacts.cs
    │   │   ├── CreatedContextFacts.cs
    │   │   └── CreatingContextFacts.cs
    │   ├── Common/
    │   │   ├── CancellationTokenExtentionsFacts.cs
    │   │   ├── JobArgumentFacts.cs
    │   │   ├── JobFacts.cs
    │   │   ├── JobFilterAttributeFacts.cs
    │   │   ├── JobFilterAttributeFilterProviderFacts.cs
    │   │   ├── JobFilterCollectionFacts.cs
    │   │   ├── JobFilterFacts.cs
    │   │   ├── JobFilterProviderCollectionFacts.cs
    │   │   ├── JobHelperFacts.cs
    │   │   ├── JobLoadExceptionFacts.cs
    │   │   ├── MethodInfoExtensionsFacts.cs
    │   │   ├── SerializationHelperFacts.cs
    │   │   ├── ShallowExceptionHelperFacts.cs
    │   │   └── TypeExtensionsFacts.cs
    │   ├── ContinuationsSupportAttributeFacts.cs
    │   ├── CronFacts.cs
    │   ├── Dashboard/
    │   │   ├── BatchCommandDispatcherFacts.cs
    │   │   ├── CommandDispatcherFacts.cs
    │   │   ├── DashboardOptionsFacts.cs
    │   │   └── HtmlHelperFacts.cs
    │   ├── GlobalConfigurationExtensionsFacts.cs
    │   ├── GlobalStateHandlersFacts.cs
    │   ├── GlobalTestsConfiguration.cs
    │   ├── Hangfire.Core.Tests.csproj
    │   ├── Hangfire.Core.Tests.csproj.DotSettings
    │   ├── JobActivatorFacts.cs
    │   ├── JobCancellationTokenFacts.cs
    │   ├── JobParameterInjectionFilterFacts.cs
    │   ├── JobStorageFacts.cs
    │   ├── LatencyTimeoutAttributeFacts.cs
    │   ├── Mocks/
    │   │   ├── ApplyStateContextMock.cs
    │   │   ├── BackgroundJobMock.cs
    │   │   ├── BackgroundProcessContextMock.cs
    │   │   ├── CreateContextMock.cs
    │   │   ├── ElectStateContextMock.cs
    │   │   ├── PerformContextMock.cs
    │   │   └── StateChangeContextMock.cs
    │   ├── Obsolete/
    │   │   └── ServerWatchdogOptionsFacts.cs
    │   ├── PreserveCultureAttributeFacts.cs
    │   ├── Processing/
    │   │   └── TaskExtensionsFacts.cs
    │   ├── Profiling/
    │   │   └── ProfilerFacts.cs
    │   ├── QueueAttributeFacts.cs
    │   ├── RecurringJobEntityFacts.cs
    │   ├── RecurringJobManagerFacts.cs
    │   ├── RecurringJobOptionsFacts.cs
    │   ├── RetryAttributeFacts.cs
    │   ├── Server/
    │   │   ├── BackgroundJobPerformerFacts.cs
    │   │   ├── BackgroundJobServerOptionsFacts.cs
    │   │   ├── BackgroundProcessContextFacts.cs
    │   │   ├── BackgroundProcessingServerFacts.cs
    │   │   ├── CoreBackgroundJobPerformerFacts.cs
    │   │   ├── DelayedJobSchedulerFacts.cs
    │   │   ├── PerformContextFacts.cs
    │   │   ├── RecurringJobSchedulerFacts.cs
    │   │   ├── ServerJobCancellationTokenFacts.cs
    │   │   ├── ServerJobCancellationWatcherFacts.cs
    │   │   ├── ServerWatchdogFacts.cs
    │   │   └── WorkerFacts.cs
    │   ├── States/
    │   │   ├── ApplyStateContextFacts.cs
    │   │   ├── AwaitingStateFacts.cs
    │   │   ├── AwaitingStateHandlerFacts.cs
    │   │   ├── BackgroundJobStateChangerFacts.cs
    │   │   ├── CoreStateMachineFacts.cs
    │   │   ├── DeletedStateFacts.cs
    │   │   ├── DeletedStateHandlerFacts.cs
    │   │   ├── ElectStateContextFacts.cs
    │   │   ├── EnqueuedStateFacts.cs
    │   │   ├── EnqueuedStateHandlerFacts.cs
    │   │   ├── EnqueuedStateValidationFacts.cs
    │   │   ├── FailedStateFacts.cs
    │   │   ├── ProcessingStateFacts.cs
    │   │   ├── ScheduledStateFacts.cs
    │   │   ├── ScheduledStateHandlerFacts.cs
    │   │   ├── StateChangeContextFacts.cs
    │   │   ├── StateHandlerCollectionFacts.cs
    │   │   ├── StateMachineFacts.cs
    │   │   ├── SucceededStateFacts.cs
    │   │   └── SucceededStateHandlerFacts.cs
    │   ├── StatisticsHistoryAttributeFacts.cs
    │   ├── Storage/
    │   │   ├── InvocationDataFacts.cs
    │   │   ├── MonitoringTypeFacts.cs
    │   │   └── StorageConnectionExtensionsFacts.cs
    │   ├── Stubs/
    │   │   ├── DashboardContextStub.cs
    │   │   ├── DashboardResponseStub.cs
    │   │   └── JobStorageStub.cs
    │   ├── Utils/
    │   │   ├── CleanSerializerSettingsAttribute.cs
    │   │   ├── CultureHelper.cs
    │   │   ├── DataCompatibilityRangeFactAttribute.cs
    │   │   ├── DataCompatibilityRangeFactDiscoverer.cs
    │   │   ├── DataCompatibilityRangeTestCase.cs
    │   │   ├── DataCompatibilityRangeTestCaseRunner.cs
    │   │   ├── DataCompatibilityRangeTestRunner.cs
    │   │   ├── DataCompatibilityRangeTheoryAttribute.cs
    │   │   ├── DataCompatibilityRangeTheoryDiscoverer.cs
    │   │   ├── DataCompatibilityRangeTheoryTestCase.cs
    │   │   ├── DataCompatibilityRangeTheoryTestCaseRunner.cs
    │   │   ├── GlobalLockAttribute.cs
    │   │   ├── PlatformHelper.cs
    │   │   ├── SequenceAttribute.cs
    │   │   ├── SerializerSettingsHelper.cs
    │   │   └── StaticLockAttribute.cs
    │   └── packages.lock.json
    ├── Hangfire.SqlServer.Msmq.Tests/
    │   ├── Hangfire.SqlServer.Msmq.Tests.csproj
    │   ├── MessageQueueExtensionsFacts.cs
    │   ├── MsmqJobQueueFacts.cs
    │   ├── MsmqJobQueueMonitoringApiFacts.cs
    │   ├── MsmqJobQueueProviderFacts.cs
    │   ├── MsmqSqlServerStorageExtensionsFacts.cs
    │   ├── Utils/
    │   │   ├── CleanMsmqQueueAttribute.cs
    │   │   └── MsmqUtils.cs
    │   └── packages.lock.json
    └── Hangfire.SqlServer.Tests/
        ├── CountersAggregatorFacts.cs
        ├── ExpirationManagerFacts.cs
        ├── GlobalTestsConfiguration.cs
        ├── Hangfire.SqlServer.Tests.csproj
        ├── PersistentJobQueueProviderCollectionFacts.cs
        ├── SqlServerConnectionFacts.cs
        ├── SqlServerDistributedLockFacts.cs
        ├── SqlServerJobQueueFacts.cs
        ├── SqlServerMonitoringApiFacts.cs
        ├── SqlServerStorageFacts.cs
        ├── SqlServerTimeoutJobFacts.cs
        ├── SqlServerTransactionJobFacts.cs
        ├── SqlServerWriteOnlyTransactionFacts.cs
        ├── StorageOptionsFacts.cs
        ├── Utils/
        │   ├── CleanDatabaseAttribute.cs
        │   ├── CleanSerializerSettingsAttribute.cs
        │   ├── ConnectionUtils.cs
        │   └── SerializerSettingsHelper.cs
        └── packages.lock.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*.cs,*.ps1]
indent_style = space
indent_size = 4


================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs     diff=csharp text
*.sln    merge=union text eol=crlf
*.csproj merge=union text eol=crlf
*.vbproj merge=union text eol=crlf
*.fsproj merge=union text eol=crlf
*.dbproj merge=union text eol=crlf

# Standard to msysgit
*.doc	 diff=astextplain
*.DOC	 diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot  diff=astextplain
*.DOT  diff=astextplain
*.pdf  diff=astextplain
*.PDF	 diff=astextplain
*.rtf	 diff=astextplain
*.RTF	 diff=astextplain

# Source code
*.cshtml text
*.css    text
*.xml    text
*.bat    text
*.ps1    text
*.nuspec text
*.js     text
*.json   text
*.sql    text

# Documentation
*.md           text
*.txt          text
*.manifest     text
COPYING        text
COPYING.LESSER text

# Configs
*.config       text
.editorconfig  text
.gitattributes text
.gitignore     text
*.yml          text
*.DotSettings  text

================================================
FILE: .gitignore
================================================
#################
## IDEA Rider
#################
.idea
.idea.*

#################
## Eclipse
#################

*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath


#################
## Visual Studio
#################

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

packages/

# Build results

[Bb]uild/
[Dd]ebug/
[Rr]elease/
x64/
[Bb]in/
[Oo]bj/

# Visual Studio 2015 cache/options directory
.vs/

# dotnet
artifacts/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

coverage.xml

*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.Publish.xml
*.pubxml

# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
App_Data/*.mdf
App_Data/*.ldf

#############
## Windows detritus
#############

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac crap
.DS_Store


#############
## Python
#############

*.py[co]

# Packages
*.egg
*.egg-info
dist/
eggs/
parts/
var/
sdist/
develop-eggs/
.installed.cfg

# Installer logs
pip-log.txt

# Unit test / coverage reports
.coverage
.tox

#Translations
*.mo

#Mr Developer
.mr.developer.cfg

#Sphinx Built Docs
docs/_build

#Jekyll site builds
_site
*.userprefs

cov-int/


================================================
FILE: .nuget/packages.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Hangfire.Build" version="0.5.0" />
  <package id="ILRepack" version="2.0.27" />
  <package id="psake" version="4.4.1" />
  <package id="RazorGenerator.MsBuild" version="2.5.0" />
</packages>

================================================
FILE: .nuget/packages.lock.json
================================================
{
  "version": 1,
  "dependencies": {
    "Any,Version=v0.0": {
      "Hangfire.Build": {
        "type": "Direct",
        "requested": "[0.5.0, 0.5.0]",
        "resolved": "0.5.0",
        "contentHash": "4yRCdMaDr6cyFRmCvpFO8kBMV57KPOofugaHOsjkDEDw+G/BCGWOdrpXfkAeTEtZBPUv2jS0PYmVNK5680KxXQ=="
      },
      "ILRepack": {
        "type": "Direct",
        "requested": "[2.0.27, 2.0.27]",
        "resolved": "2.0.27",
        "contentHash": "N5nhVwlgU2ipeonLBVuv1HpsIclJI/5QujuLeo3BW7irD2KnSFXkHa5FmXwzdCkB36D0XGOxNMxh99P7kjgU2A=="
      },
      "psake": {
        "type": "Direct",
        "requested": "[4.4.1, 4.4.1]",
        "resolved": "4.4.1",
        "contentHash": "Hn5kdGPEoapi+wAAjaGjKEZVnuYp7fUrPK3IivLYG6Bn4adhd8l+KXXPMEmte41RmrLvfV7XGZa9KsSTc0gjDA=="
      },
      "RazorGenerator.MsBuild": {
        "type": "Direct",
        "requested": "[2.5.0, 2.5.0]",
        "resolved": "2.5.0",
        "contentHash": "yOu2KEjDFvE20b+YK/+Ovf4czUHWH2DlBB9lIKDXdBjcMh3PXrPJTxPzi468XrFvE1dVEiWu+pGNkVFE9+VpMA=="
      }
    }
  }
}

================================================
FILE: CONTRIBUTING.md
================================================
# File an Issue

If you have a question rather than an issue, please post it to the [Hangfire Stack 
Overflow tag](https://stackoverflow.com/questions/tagged/hangfire). For non-security related bugs please log a new issue:

1. Search the [issue tracker](https://github.com/HangfireIO/Hangfire/issues) for similar issues.
2. Specify the **version** of `Hangfire.Core` package in which the bug was occurred.
3. Specify the **storage** package (e.g. `Hangfire.SqlServer`) you are using and its exact version.
4. Specify the **configuration** logic for Hangfire.
5. Specify all the custom job **filters** if any, and post their source code.
6. Describe the problem and your environment in detail (i.e. what happened and what you expected would happen).

ProTip!

* Include screenshots from Dashboard UI, to allow us to see the same 
  problem. You can simply use <kbd>Print Screen</kbd>, then <kbd>Ctrl + V</kbd> directly 
 into the comment window on GitHub.
* Include log messages, written by Hangfire when a problem occurred. Don't forget to tell your logger to dump all the exception details.
* Include stack trace dump, if your background processing is stuck. You can use 
   [`stdump`](https://github.com/odinserj/stdump) utility to get them either from a minidump file,
   or from a running process without interrupting it: `stdump w3wp > stacktrace.txt`

Hints

* Use [syntax highlighting](https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting) for your C#, SQL, etc. code blocks.
* Use [fenced code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/#fenced-code-blocks) for exception details.

# Reporting security issues 

In order to give the community time to respond and upgrade we strongly urge you report all security issues privately. Please email us at [security@hangfire.io](mailto:security@hangfire.io) with details and we will respond ASAP. Security issues always take precedence over bug fixes and feature work. We can and do mark releases as "urgent" if they contain serious security fixes. 


================================================
FILE: COPYING
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU General Public License is a free, copyleft license for
software and other kinds of works.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.  We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors.  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights.  Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received.  You must make sure that they, too, receive
or can get the source code.  And you must show them these terms so they
know their rights.

  Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.

  For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software.  For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.

  Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so.  This is fundamentally incompatible with the aim of
protecting users' freedom to change the software.  The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable.  Therefore, we
have designed this version of the GPL to prohibit the practice for those
products.  If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.

  Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary.  To prevent this, the GPL assures that
patents cannot be used to render the program non-free.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Use with the GNU Affero General Public License.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.

  The GNU General Public License does not permit incorporating your program
into proprietary programs.  If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.  But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.


================================================
FILE: COPYING.LESSER
================================================
                   GNU LESSER GENERAL PUBLIC LICENSE
                       Version 3, 29 June 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.


  This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

  0. Additional Definitions.

  As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

  "The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

  An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

  A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

  The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

  The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

  1. Exception to Section 3 of the GNU GPL.

  You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

  2. Conveying Modified Versions.

  If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

   a) under this License, provided that you make a good faith effort to
   ensure that, in the event an Application does not supply the
   function or data, the facility still operates, and performs
   whatever part of its purpose remains meaningful, or

   b) under the GNU GPL, with none of the additional permissions of
   this License applicable to that copy.

  3. Object Code Incorporating Material from Library Header Files.

  The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

   a) Give prominent notice with each copy of the object code that the
   Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the object code with a copy of the GNU GPL and this license
   document.

  4. Combined Works.

  You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

   a) Give prominent notice with each copy of the Combined Work that
   the Library is used in it and that the Library and its use are
   covered by this License.

   b) Accompany the Combined Work with a copy of the GNU GPL and this license
   document.

   c) For a Combined Work that displays copyright notices during
   execution, include the copyright notice for the Library among
   these notices, as well as a reference directing the user to the
   copies of the GNU GPL and this license document.

   d) Do one of the following:

       0) Convey the Minimal Corresponding Source under the terms of this
       License, and the Corresponding Application Code in a form
       suitable for, and under terms that permit, the user to
       recombine or relink the Application with a modified version of
       the Linked Version to produce a modified Combined Work, in the
       manner specified by section 6 of the GNU GPL for conveying
       Corresponding Source.

       1) Use a suitable shared library mechanism for linking with the
       Library.  A suitable mechanism is one that (a) uses at run time
       a copy of the Library already present on the user's computer
       system, and (b) will operate properly with a modified version
       of the Library that is interface-compatible with the Linked
       Version.

   e) Provide Installation Information, but only if you would otherwise
   be required to provide such information under section 6 of the
   GNU GPL, and only to the extent that such information is
   necessary to install and execute a modified version of the
   Combined Work produced by recombining or relinking the
   Application with a modified version of the Linked Version. (If
   you use option 4d0, the Installation Information must accompany
   the Minimal Corresponding Source and Corresponding Application
   Code. If you use option 4d1, you must provide the Installation
   Information in the manner specified by section 6 of the GNU GPL
   for conveying Corresponding Source.)

  5. Combined Libraries.

  You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

   a) Accompany the combined library with a copy of the same work based
   on the Library, uncombined with any other library facilities,
   conveyed under the terms of this License.

   b) Give prominent notice with the combined library that part of it
   is a work based on the Library, and explaining where to find the
   accompanying uncombined form of the same work.

  6. Revised Versions of the GNU Lesser General Public License.

  The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

  Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

  If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.


================================================
FILE: Directory.Build.props
================================================
<Project>
    <PropertyGroup>
        <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
        <DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
    </PropertyGroup>

    <PropertyGroup Condition="'$(APPVEYOR)' == 'True'">
        <RestoreLockedMode>true</RestoreLockedMode>
    </PropertyGroup>
</Project>


================================================
FILE: Hangfire.sln
================================================

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.136
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleSample", "samples\ConsoleSample\ConsoleSample.csproj", "{C02BB718-2AE4-434C-8668-C894FF663FCE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hangfire.Core", "src\Hangfire.Core\Hangfire.Core.csproj", "{C995EA9E-56EE-4951-8260-D94260A7F4C2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{119DA7FA-B94C-4B63-AEC9-428EF834E0D8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hangfire.SqlServer", "src\Hangfire.SqlServer\Hangfire.SqlServer.csproj", "{A523C0E3-097D-4869-977F-15A717EA3E83}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{766BE831-F758-46BC-AFD3-BBEEFE0F686F}"
	ProjectSection(SolutionItems) = preProject
		tests\Directory.Build.props = tests\Directory.Build.props
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{15E186DF-8918-44F1-9285-9756EDAECA5D}"
	ProjectSection(SolutionItems) = preProject
		appveyor.yml = appveyor.yml
		psake-project.ps1 = psake-project.ps1
		src\SharedAssemblyInfo.cs = src\SharedAssemblyInfo.cs
		src\Directory.Build.props = src\Directory.Build.props
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuspecs", "nuspecs", "{5E687025-A525-4534-8869-CB685C7B11C4}"
	ProjectSection(SolutionItems) = preProject
		nuspecs\Hangfire.AspNetCore.nuspec = nuspecs\Hangfire.AspNetCore.nuspec
		nuspecs\Hangfire.Core.nuspec = nuspecs\Hangfire.Core.nuspec
		nuspecs\Hangfire.NetCore.nuspec = nuspecs\Hangfire.NetCore.nuspec
		nuspecs\Hangfire.nuspec = nuspecs\Hangfire.nuspec
		nuspecs\Hangfire.SqlServer.MSMQ.nuspec = nuspecs\Hangfire.SqlServer.MSMQ.nuspec
		nuspecs\Hangfire.SqlServer.nuspec = nuspecs\Hangfire.SqlServer.nuspec
	EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "content", "content", "{37E2BF00-C473-48A5-B2A7-5A3DE0910FCF}"
	ProjectSection(SolutionItems) = preProject
		content\readme.txt = content\readme.txt
	EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hangfire.Core.Tests", "tests\Hangfire.Core.Tests\Hangfire.Core.Tests.csproj", "{E13C3543-39A3-475C-BB43-2E311E634843}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hangfire.SqlServer.Tests", "tests\Hangfire.SqlServer.Tests\Hangfire.SqlServer.Tests.csproj", "{6DFFA275-C483-4501-823A-741AC9EC0846}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hangfire.SqlServer.Msmq", "src\Hangfire.SqlServer.Msmq\Hangfire.SqlServer.Msmq.csproj", "{762BE479-0AEC-47E0-8F9C-34FA54641749}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hangfire.SqlServer.Msmq.Tests", "tests\Hangfire.SqlServer.Msmq.Tests\Hangfire.SqlServer.Msmq.Tests.csproj", "{DBC6BC12-06AD-4597-9E0F-B77BE754FA2C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F710C9CF-69F9-4373-9B74-ABB185BF985B}"
	ProjectSection(SolutionItems) = preProject
		.nuget\packages.config = .nuget\packages.config
	EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hangfire.AspNetCore", "src\Hangfire.AspNetCore\Hangfire.AspNetCore.csproj", "{73AFEBE0-9B11-44F6-A69C-8A51538CF18E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCoreSample", "samples\NetCoreSample\NetCoreSample.csproj", "{FA751692-20C8-4986-8164-D21F505B2172}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hangfire.NetCore", "src\Hangfire.NetCore\Hangfire.NetCore.csproj", "{AA8E3A67-8731-423A-9B69-EE44EC6B8E1A}"
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{C02BB718-2AE4-434C-8668-C894FF663FCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{C02BB718-2AE4-434C-8668-C894FF663FCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{C02BB718-2AE4-434C-8668-C894FF663FCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{C02BB718-2AE4-434C-8668-C894FF663FCE}.Release|Any CPU.Build.0 = Release|Any CPU
		{C995EA9E-56EE-4951-8260-D94260A7F4C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{C995EA9E-56EE-4951-8260-D94260A7F4C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{C995EA9E-56EE-4951-8260-D94260A7F4C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{C995EA9E-56EE-4951-8260-D94260A7F4C2}.Release|Any CPU.Build.0 = Release|Any CPU
		{A523C0E3-097D-4869-977F-15A717EA3E83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{A523C0E3-097D-4869-977F-15A717EA3E83}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{A523C0E3-097D-4869-977F-15A717EA3E83}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{A523C0E3-097D-4869-977F-15A717EA3E83}.Release|Any CPU.Build.0 = Release|Any CPU
		{E13C3543-39A3-475C-BB43-2E311E634843}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{E13C3543-39A3-475C-BB43-2E311E634843}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{E13C3543-39A3-475C-BB43-2E311E634843}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{E13C3543-39A3-475C-BB43-2E311E634843}.Release|Any CPU.Build.0 = Release|Any CPU
		{6DFFA275-C483-4501-823A-741AC9EC0846}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{6DFFA275-C483-4501-823A-741AC9EC0846}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{6DFFA275-C483-4501-823A-741AC9EC0846}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{6DFFA275-C483-4501-823A-741AC9EC0846}.Release|Any CPU.Build.0 = Release|Any CPU
		{762BE479-0AEC-47E0-8F9C-34FA54641749}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{762BE479-0AEC-47E0-8F9C-34FA54641749}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{762BE479-0AEC-47E0-8F9C-34FA54641749}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{762BE479-0AEC-47E0-8F9C-34FA54641749}.Release|Any CPU.Build.0 = Release|Any CPU
		{DBC6BC12-06AD-4597-9E0F-B77BE754FA2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{DBC6BC12-06AD-4597-9E0F-B77BE754FA2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{DBC6BC12-06AD-4597-9E0F-B77BE754FA2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{DBC6BC12-06AD-4597-9E0F-B77BE754FA2C}.Release|Any CPU.Build.0 = Release|Any CPU
		{73AFEBE0-9B11-44F6-A69C-8A51538CF18E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{73AFEBE0-9B11-44F6-A69C-8A51538CF18E}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{73AFEBE0-9B11-44F6-A69C-8A51538CF18E}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{73AFEBE0-9B11-44F6-A69C-8A51538CF18E}.Release|Any CPU.Build.0 = Release|Any CPU
		{FA751692-20C8-4986-8164-D21F505B2172}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{FA751692-20C8-4986-8164-D21F505B2172}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{FA751692-20C8-4986-8164-D21F505B2172}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{FA751692-20C8-4986-8164-D21F505B2172}.Release|Any CPU.Build.0 = Release|Any CPU
		{AA8E3A67-8731-423A-9B69-EE44EC6B8E1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{AA8E3A67-8731-423A-9B69-EE44EC6B8E1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{AA8E3A67-8731-423A-9B69-EE44EC6B8E1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{AA8E3A67-8731-423A-9B69-EE44EC6B8E1A}.Release|Any CPU.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(NestedProjects) = preSolution
		{C02BB718-2AE4-434C-8668-C894FF663FCE} = {119DA7FA-B94C-4B63-AEC9-428EF834E0D8}
		{E13C3543-39A3-475C-BB43-2E311E634843} = {766BE831-F758-46BC-AFD3-BBEEFE0F686F}
		{6DFFA275-C483-4501-823A-741AC9EC0846} = {766BE831-F758-46BC-AFD3-BBEEFE0F686F}
		{DBC6BC12-06AD-4597-9E0F-B77BE754FA2C} = {766BE831-F758-46BC-AFD3-BBEEFE0F686F}
		{FA751692-20C8-4986-8164-D21F505B2172} = {119DA7FA-B94C-4B63-AEC9-428EF834E0D8}
	EndGlobalSection
	GlobalSection(ExtensibilityGlobals) = postSolution
		SolutionGuid = {7597454C-C272-4016-87A2-CF1196347355}
	EndGlobalSection
EndGlobal


================================================
FILE: Hangfire.sln.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=Hangfire_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=Hangfire_002ERedis_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=Hangfire_002ESqlServer_002EAnnotations/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/SPACE_WITHIN_SINGLE_LINE_ARRAY_INITIALIZER_BRACES/@EntryValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
	<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters&gt;&lt;Filter ModuleMask="Hangfire.Core.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /&gt;&lt;Filter ModuleMask="Hangfire.SqlServer.Tests" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /&gt;&lt;/ExcludeFilters&gt;&lt;/data&gt;</s:String>
	<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Hangfire/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Odinokov/@EntryIndexedValue">True</s:Boolean>
	<s:Boolean x:Key="/Default/UserDictionary/Words/=Sergey/@EntryIndexedValue">True</s:Boolean>
	</wpf:ResourceDictionary>


================================================
FILE: LICENSE.md
================================================
License
========

Copyright © 2013-2026 Hangfire OÜ.

Hangfire software is an open-source software that is multi-licensed under the terms of the licenses listed in this file. Recipients may choose the terms under which they are want to use or distribute the software, when all the preconditions of a chosen license are satisfied.

LGPL v3 License
---------------

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

Please see COPYING.LESSER and COPYING files for details.

Commercial License
------------------

Subject to the purchase of a corresponding subscription (please see https://www.hangfire.io/pricing/), you may distribute Hangfire under the terms of commercial license, that allows you to distribute private forks and modifications. Please see LICENSE_STANDARD and LICENSE_ROYALTYFREE files for details.


================================================
FILE: LICENSE_ROYALTYFREE
================================================
Royalty-free End-user License Agreement
=======================================

THIS LICENSE AGREEMENT DESCRIBES YOUR RIGHTS WITH RESPECT TO THE SOFTWARE AND ITS COMPONENTS.

1. OWNERSHIP, LICENSE GRANT

This is a license agreement and not an agreement for sale. We reserve ownership of all intellectual property rights inherent in or relating to the Software, which include, but are not limited to, all copyright, patent rights, all rights in relation to registered and unregistered trademarks (including service marks), confidential information (including trade secrets and know-how) and all rights other than those expressly granted by this License Agreement.

Subject to the payment of the fee required and subject to the terms and conditions of this License Agreement, We grant to You a revocable, non- transferable and non-exclusive license (i) for Designated User(s) (as defined below) within Your organization to install and use the Software on any workstations used exclusively by such Designated User and (ii) for You to install and use the Software in connection with unlimited domains and sub-domains on unlimited servers, solely in connection with distribution of the Software in accordance with sections 3 and 4 below. This license is not sublicensable except as explicitly set forth herein. "Designated User(s)" shall mean Your employee(s) acting within the scope of their employment or Your consultant(s) or contractor(s) acting within the scope of the services they provide for You or on Your behalf for whom You have purchased a license to use the Software.

2. PERMITTED USES, SOURCE CODE, MODIFICATIONS

We provide You with source code so that You can create Modifications of the original Software, where Modification means: a) any addition to or deletion from the contents of a file included in the original Software or previous Modifications created by You, or b) any new file that contains any part of the original Software or previous Modifications. While You retain all rights to any original work authored by You as part of the Modifications, We continue to own all copyright and other intellectual property rights in the Software.

3. DISTRIBUTION

You may distribute the Software in any applications, frameworks, or elements (collectively referred to as an "Application" or "Applications") that you develop using the Software in accordance with this License Agreement, provided that such distribution does not violate the restrictions set forth in section 4 of this License Agreement. You must not remove, obscure or interfere with any copyright, acknowledgment, attribution, trademark, warning or disclaimer statement affixed to, incorporated in or otherwise applied in connection with the Software.

You are required to ensure that the Software is not reused by or with any applications other than those with which You distribute it as permitted herein. For example, if You install the Software on a customer's server, that customer is not permitted to use the Software independently of Your application, and must be informed as such.

You will not owe Us any royalties for Your distribution of the Software in accordance with this License Agreement.

4. PROHIBITED USES

You may not, without Our prior written consent, redistribute the Software or Modifications other than by including the Software or a portion thereof within Your own product, which must have substantially different functionality than the Software or Modifications and must not allow any third party to use the Software or Modifications, or any portions thereof, for software development or application development purposes. You are explicitly not allowed to redistribute the Software or Modifications as part of any product that can be described as a development toolkit or library, an application builder, a website builder or any product that is intended for use by software, application, or website developers or designers. You may not change or remove the copyright notice from any of the files included in the Software or Modifications.

You may redistribute the Software as part of Your own products.

UNDER NO CIRCUMSTANCES MAY YOU USE THE SOFTWARE FOR A PRODUCT THAT IS INTENDED FOR SOFTWARE OR APPLICATION DEVELOPMENT PURPOSES.

5. TERMINATION

This License Agreement and Your right to use the Software and Modifications will terminate immediately without notice if You fail to comply with the terms and conditions of this License Agreement. Upon termination, You agree to immediately cease using and destroy the Software or Modifications, including all accompanying documents. The provisions of sections 4, 5, 6, 7, 8, 9, 10 and 11 will survive any termination of this License Agreement.

6. DISCLAIMER OF WARRANTIES

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, WE AND OUR SUPPLIERS DISCLAIM ALL WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE. WE DO NOT GUARANTEE THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, AND YOU ACKNOWLEDGE THAT IT IS NOT TECHNICALLY PRACTICABLE FOR US TO DO SO.

7. LIMITATION OF LIABILITIES

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL WE OR OUR SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION OR ANY OTHER PECUNIARY LAW) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN ANY CASE, OUR ENTIRE LIABILITY UNDER ANY PROVISION OF THIS LICENSE AGREEMENT SHALL BE LIMITED TO THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE.

8. VERIFICATION

We or a certified auditor acting on Our behalf, may, upon its reasonable request and at its expense, audit You with respect to the use of the Software. Such audit may be conducted by mail, electronic means or through an in-person visit to Your place of business. Any such in-person audit shall be conducted during regular business hours at Your facilities and shall not unreasonably interfere with Your business activities. We shall not remove, copy, or redistribute any electronic material during the course of an audit. If an audit reveals that You are using the Software in a way that is in material violation of the terms of the License Agreement, then You shall pay Our reasonable costs of conducting the audit. In the case of a material violation, You agree to pay Us any amounts owing that are attributable to the unauthorized use. In the alternative, We reserve the right, at Our sole option, to terminate the licenses for the Software.

9. THIRD PARTY SOFTWARE

The Software may contain third party open source software which requires notices and/or additional terms and conditions. Such required third party software notices and/or additional terms and conditions are located in the NOTICES file accompanying the Software distribution (also available at https://www.hangfire.io/licensing/third-party.html), and are made a part of and incorporated by reference into this Agreement. By accepting this Agreement, you are also accepting the additional terms and conditions, if any, set forth therein.

10. PAYMENT AND TAXES

If credit has been extended to You by Us, all payments under this License Agreement are due within thirty (30) days of the date We mail an invoice to You. If We have not extended credit to You, You shall be required to make payment concurrent with the delivery of the Software by Us. All amounts payable are gross amounts but exclusive of any value added tax, use tax, sales tax or similar tax. You shall be entitled to withhold from payments any applicable withholding taxes and comply with all applicable tax and employment legislation. Each party shall pay all taxes (including, but not limited to, taxes based upon its income) or levies imposed on it under applicable laws, regulations and tax treaties as a result of this Agreement and any payments made hereunder (including those required to be withheld or deducted from payments). Each party shall furnish evidence of such paid taxes as is sufficient to enable the other party to obtain any credits available to it, including original withholding tax certificates.

11. MISCELLANEOUS

The license granted herein applies only to the version of the Software available when purchased in connection with the terms of this License Agreement. Any previous or subsequent license granted to You for use of the Software shall be governed by the terms and conditions of the agreement entered in connection with purchase of that version of the Software. You agree that you will comply with all applicable laws and regulations with respect to the Software, including without limitation all export and re-export control laws and regulations.

While redistributing the Software or Modifications thereof, You may choose to offer acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License Agreement. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on Our behalf. You agree to indemnify, defend, and hold Us harmless from and against any liability incurred by, or claims asserted against, Us (i) by reason of Your accepting any such support, warranty, indemnity or additional liability; or (ii) arising out of the use, reproduction or distribution of Your Application, except to the extent such claim is solely based on the inclusion of the Software therein.

You agree to be identified as a customer of ours and You agree that We may refer to You by name, trade name and trademark, if applicable, and may briefly describe Your business in our marketing materials and web site.

You may not assign this License Agreement without Our prior written consent, which will not be unreasonably withheld. This License Agreement will inure to the benefit of Our successors and assigns.

You acknowledge that this License Agreement is complete and is the exclusive representation of our agreement. No oral or written information given by Us or on our behalf shall create a warranty or collateral contract, or in any way increase the scope of this License Agreement in any way, and You may not rely on any such oral or written information. No term or condition contained in any purchase order shall apply unless expressly accepted by Us in writing.

There are no implied licenses or other implied rights granted under this License Agreement, and all rights, save for those expressly granted hereunder, shall remain with Us and our licensors. In addition, no licenses or immunities are granted to the combination of the Software and/or Modifications, as applicable, with any other software or hardware not delivered by Us to You under this License Agreement.

If any provision in this License Agreement shall be determined to be invalid, such provision shall be deemed omitted; the remainder of this License Agreement shall continue in full force and effect. If any remedy provided is determined to have failed for its essential purpose, all limitations of liability and exclusions of damages set forth in this License Agreement shall remain in effect.

This License Agreement may be modified only by a written instrument signed by an authorized representative of each party.

This License Agreement is governed by the law of the State of Oregon, United States (notwithstanding conflicts of laws provisions), and all parties irrevocably submit to the jurisdiction of the courts of the State of Oregon and further agree to commence any litigation which may arise hereunder in the state or federal courts located in the judicial district of Multnomah County, Oregon, US.

If the Software or any related documentation is licensed to the U.S. government or any agency thereof, it will be deemed to be "commercial computer software" or "commercial computer software documentation", pursuant to DFAR Section 227.7202 and FAR Section 12.212. Any use of the Software or related documentation by the U.S. government will be governed solely by the terms of this License Agreement.


================================================
FILE: LICENSE_STANDARD
================================================
Standard End-user License Agreement
===================================

THIS LICENSE AGREEMENT DESCRIBES YOUR RIGHTS WITH RESPECT TO THE SOFTWARE AND ITS COMPONENTS.

1. OWNERSHIP, LICENSE GRANT

This is a license agreement and not an agreement for sale. We reserve ownership of all intellectual property rights inherent in or relating to the Software, which include, but are not limited to, all copyright, patent rights, all rights in relation to registered and unregistered trademarks (including service marks), confidential information (including trade secrets and know-how) and all rights other than those expressly granted by this License Agreement.

Subject to the payment of the fee required and subject to the terms and conditions of this License Agreement, We grant to You a revocable, non- transferable and non-exclusive license (i) for Designated User(s) (as defined below) within Your organization to install and use the Software on any workstations used exclusively by such Designated User and (ii) for You to install and use the Software in connection with unlimited domains and sub-domains on unlimited servers, solely in connection with distribution of the Software in accordance with sections 3 and 4 below. This license is not sublicensable except as explicitly set forth herein. "Designated User(s)" shall mean Your employee(s) acting within the scope of their employment or Your consultant(s) or contractor(s) acting within the scope of the services they provide for You or on Your behalf for whom You have purchased a license to use the Software.

2. PERMITTED USES, SOURCE CODE, MODIFICATIONS

We provide You with source code so that You can create Modifications of the original Software, where Modification means: a) any addition to or deletion from the contents of a file included in the original Software or previous Modifications created by You, or b) any new file that contains any part of the original Software or previous Modifications. While You retain all rights to any original work authored by You as part of the Modifications, We continue to own all copyright and other intellectual property rights in the Software.

3. DISTRIBUTION

You may distribute the Software in any applications, frameworks, or elements (collectively referred to as an "Application" or "Applications") that you develop using the Software in accordance with this License Agreement, provided that such distribution does not violate the restrictions set forth in section 4 of this License Agreement. You must not remove, obscure or interfere with any copyright, acknowledgment, attribution, trademark, warning or disclaimer statement affixed to, incorporated in or otherwise applied in connection with the Software.

You are required to ensure that the Software is not reused by or with any applications other than those with which You distribute it as permitted herein. For example, if You install the Software on a customer's server, that customer is not permitted to use the Software independently of Your application, and must be informed as such.

You will not owe Us any royalties for Your distribution of the Software in accordance with this License Agreement.

4. PROHIBITED USES

You may not, without Our prior written consent, redistribute the Software or Modifications other than by including the Software or a portion thereof within Your own product, which must have substantially different functionality than the Software or Modifications and must not allow any third party to use the Software or Modifications, or any portions thereof, for software development or application development purposes. You are explicitly not allowed to redistribute the Software or Modifications as part of any product that can be described as a development toolkit or library, an application builder, a website builder or any product that is intended for use by software, application, or website developers or designers. You may not change or remove the copyright notice from any of the files included in the Software or Modifications.

You may not redistribute the Software as part of a product, "appliance" or "virtual server". You may not redistribute the Software on any server which is not directly under Your control.

UNDER NO CIRCUMSTANCES MAY YOU USE THE SOFTWARE FOR A PRODUCT THAT IS INTENDED FOR SOFTWARE OR APPLICATION DEVELOPMENT PURPOSES.

5. TERMINATION

This License Agreement and Your right to use the Software and Modifications will terminate immediately without notice if You fail to comply with the terms and conditions of this License Agreement. Upon termination, You agree to immediately cease using and destroy the Software or Modifications, including all accompanying documents. The provisions of sections 4, 5, 6, 7, 8, 9, 10 and 11 will survive any termination of this License Agreement.

6. DISCLAIMER OF WARRANTIES

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, WE AND OUR SUPPLIERS DISCLAIM ALL WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE. WE DO NOT GUARANTEE THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, AND YOU ACKNOWLEDGE THAT IT IS NOT TECHNICALLY PRACTICABLE FOR US TO DO SO.

7. LIMITATION OF LIABILITIES

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL WE OR OUR SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION OR ANY OTHER PECUNIARY LAW) ARISING OUT OF THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN ANY CASE, OUR ENTIRE LIABILITY UNDER ANY PROVISION OF THIS LICENSE AGREEMENT SHALL BE LIMITED TO THE AMOUNT ACTUALLY PAID BY YOU FOR THE SOFTWARE.

8. VERIFICATION

We or a certified auditor acting on Our behalf, may, upon its reasonable request and at its expense, audit You with respect to the use of the Software. Such audit may be conducted by mail, electronic means or through an in-person visit to Your place of business. Any such in-person audit shall be conducted during regular business hours at Your facilities and shall not unreasonably interfere with Your business activities. We shall not remove, copy, or redistribute any electronic material during the course of an audit. If an audit reveals that You are using the Software in a way that is in material violation of the terms of the License Agreement, then You shall pay Our reasonable costs of conducting the audit. In the case of a material violation, You agree to pay Us any amounts owing that are attributable to the unauthorized use. In the alternative, We reserve the right, at Our sole option, to terminate the licenses for the Software.

9. THIRD PARTY SOFTWARE

The Software may contain third party open-source software which requires notices and/or additional terms and conditions. Such required third party software notices and/or additional terms and conditions are located in the NOTICES file accompanying the Software distribution (also available at https://www.hangfire.io/licensing/third-party.html), and are made a part of and incorporated by reference into this Agreement. By accepting this Agreement, you are also accepting the additional terms and conditions, if any, set forth therein.

10. PAYMENT AND TAXES

If credit has been extended to You by Us, all payments under this License Agreement are due within thirty (30) days of the date We mail an invoice to You. If We have not extended credit to You, You shall be required to make payment concurrent with the delivery of the Software by Us. All amounts payable are gross amounts but exclusive of any value added tax, use tax, sales tax or similar tax. You shall be entitled to withhold from payments any applicable withholding taxes and comply with all applicable tax and employment legislation. Each party shall pay all taxes (including, but not limited to, taxes based upon its income) or levies imposed on it under applicable laws, regulations and tax treaties as a result of this Agreement and any payments made hereunder (including those required to be withheld or deducted from payments). Each party shall furnish evidence of such paid taxes as is sufficient to enable the other party to obtain any credits available to it, including original withholding tax certificates.

11. MISCELLANEOUS

The license granted herein applies only to the version of the Software available when purchased in connection with the terms of this License Agreement. Any previous or subsequent license granted to You for use of the Software shall be governed by the terms and conditions of the agreement entered in connection with purchase of that version of the Software. You agree that you will comply with all applicable laws and regulations with respect to the Software, including without limitation all export and re-export control laws and regulations.

While redistributing the Software or Modifications thereof, You may choose to offer acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License Agreement. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on Our behalf. You agree to indemnify, defend, and hold Us harmless from and against any liability incurred by, or claims asserted against, Us (i) by reason of Your accepting any such support, warranty, indemnity or additional liability; or (ii) arising out of the use, reproduction or distribution of Your Application, except to the extent such claim is solely based on the inclusion of the Software therein.

You agree to be identified as a customer of ours and You agree that We may refer to You by name, trade name and trademark, if applicable, and may briefly describe Your business in our marketing materials and web site.

You may not assign this License Agreement without Our prior written consent, which will not be unreasonably withheld. This License Agreement will inure to the benefit of Our successors and assigns.

You acknowledge that this License Agreement is complete and is the exclusive representation of our agreement. No oral or written information given by Us or on our behalf shall create a warranty or collateral contract, or in any way increase the scope of this License Agreement in any way, and You may not rely on any such oral or written information. No term or condition contained in any purchase order shall apply unless expressly accepted by Us in writing.

There are no implied licenses or other implied rights granted under this License Agreement, and all rights, save for those expressly granted hereunder, shall remain with Us and our licensors. In addition, no licenses or immunities are granted to the combination of the Software and/or Modifications, as applicable, with any other software or hardware not delivered by Us to You under this License Agreement.

If any provision in this License Agreement shall be determined to be invalid, such provision shall be deemed omitted; the remainder of this License Agreement shall continue in full force and effect. If any remedy provided is determined to have failed for its essential purpose, all limitations of liability and exclusions of damages set forth in this License Agreement shall remain in effect.

This License Agreement may be modified only by a written instrument signed by an authorized representative of each party.

This License Agreement is governed by the law of the State of Oregon, United States (notwithstanding conflicts of laws provisions), and all parties irrevocably submit to the jurisdiction of the courts of the State of Oregon and further agree to commence any litigation which may arise hereunder in the state or federal courts located in the judicial district of Multnomah County, Oregon, US.

If the Software or any related documentation is licensed to the U.S. government or any agency thereof, it will be deemed to be "commercial computer software" or "commercial computer software documentation", pursuant to DFAR Section 227.7202 and FAR Section 12.212. Any use of the Software or related documentation by the U.S. government will be governed solely by the terms of this License Agreement.


================================================
FILE: NOTICES
================================================
Third Party Software Notices
============================

Hangfire products use software provided by third parties, including open source software. The following copyright statements and licenses apply to various  components that are distributed with various Hangfire products. The Hangfire product that includes this file does not necessarily use all of the third party software components referred to below. 

Licensee must fully agree and comply with these license terms or must not use these components. The third party license terms apply only to the respective software to which the license pertains, and the third party license terms do not apply to the Hangfire software. 

In the event that we accidentally failed to list a required notice, please bring it to our attention by sending an email to <support@hangfire.io>.

### [LibLog](https://github.com/damianh/LibLog) (MIT License)

Copyright (C) 2011-2017 Damian Hickey. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

### [NCrontab](https://github.com/atifaziz/NCrontab) (Apache License 2.0)

Copyright (c) 2008 Atif Aziz. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

### Microsoft.Owin (Apache License 2.0)

Part of Katana Project (http://katanaproject.codeplex.com/)

Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

### [Cron Expression Descriptor](https://github.com/bradymholt/cron-expression-descriptor) (MIT License)

Copyright (c) 2013 Brady Holt

Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
and associated documentation files (the "Software"), to deal in the Software without restriction, 
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, 
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial 
portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

### [Stack Trace Parser](https://github.com/atifaziz/StackTraceParser) (Apache License 2.0)

Copyright (c) 2011 Atif Aziz. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

### [Stack Trace Formatter](https://github.com/atifaziz/StackTraceFormatter) (Apache License 2.0)

Copyright (c) 2011 Atif Aziz. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

### MoreLINQ - Extensions to LINQ to Objects (Apache License 2.0)

Copyright (c) 2008 Jonathan Skeet. All rights reserved.
 
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
 
http://www.apache.org/licenses/LICENSE-2.0
 
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

### [ExpressionUtil from ASP.NET MVC](https://github.com/aspnet/AspNetWebStack/tree/v3.0/src/Microsoft.Web.Mvc/ExpressionUtil) (Apache License 2.0)

Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. 

Licensed under the Apache License, Version 2.0 (the "License"); you
may not use this file except in compliance with the License. You may
obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied. See the License for the specific language governing permissions
and limitations under the License.

### [Dapper](https://github.com/StackExchange/Dapper) (Apache License 2.0)

Copyright (c) 2017 Stack Exchange, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

### [Bootstrap](https://github.com/twbs/bootstrap) (MIT License)

Copyright 2011-2019 Twitter, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

### [Moment.js](https://github.com/moment/moment) (MIT License)

Copyright (c) JS Foundation and other contributors

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

### [jQuery](https://github.com/jquery/jquery) (MIT License)

Copyright OpenJS Foundation and other contributors, https://openjsf.org/

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

### MSMQ API Extensions (MIT License)

Copyright (c) 2014 Philip Hoppe

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

### [Chart.js](https://www.chartjs.org/) (MIT License)

The MIT License (MIT)

Copyright (c) 2018 Chart.js Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

### [chartjs-plugin-streaming](https://github.com/nagix/chartjs-plugin-streaming) (MIT License)

Copyright (c) 2021-2019 Akihiko Kusanagi

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: NuGet.config
================================================
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="signatureValidationMode" value="require" />
    <add key="globalPackagesFolder" value="%USERPROFILE%/.nuget/TrustedPackages" />
  </config>

  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>

  <trustedSigners> 
    <repository name="nuget.org" serviceIndex="https://api.nuget.org/v3/index.json">
      <owners>Microsoft;aspnet;dotnetframework;HangfireIO;xunit;jamesnk;kzu;castleproject;psake;ILRepack;davidebbo;StackExchange;Dapper;brady.holt;dwhelan;raboof;damianh;</owners>
      <certificate fingerprint="5a2901d6ada3d18260b9c6dfe2133c95d74b9eef6ae0e5dc334c8454d1477df4" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
      <certificate fingerprint="0e5f38f57dc1bcc806d8494f4f90fbcedd988b46760709cbeec6f4219aa6157d" hashAlgorithm="SHA256" allowUntrustedRoot="false" />
      <certificate fingerprint="1f4b311d9acc115c8dc8018b5a49e00fce6da8e2855f9f014ca6f34570bc482d" hashAlgorithm="SHA256" allowUntrustedRoot="false" /> 
    </repository>
  </trustedSigners>

</configuration>

================================================
FILE: README.md
================================================
Hangfire 
=========

[![Official Site](https://img.shields.io/badge/site-hangfire.io-blue.svg)](https://www.hangfire.io) [![Latest version](https://img.shields.io/nuget/v/Hangfire.svg?label=release)](https://www.nuget.org/packages?q=hangfire) [![Downloads](https://img.shields.io/nuget/dt/Hangfire.Core.svg)](https://www.nuget.org/packages/Hangfire.Core/) [![License LGPLv3](https://img.shields.io/badge/license-LGPLv3-green.svg)](https://www.gnu.org/licenses/lgpl-3.0.html) [![Coverity Scan](https://scan.coverity.com/projects/4423/badge.svg?flat=1)](https://scan.coverity.com/projects/hangfireio-hangfire)

## Build Status

&nbsp; | `main` | `dev`
--- | --- | --- 
**AppVeyor** | [![Windows Build Status](https://ci.appveyor.com/api/projects/status/70m632jkycqpnsp9/branch/main?svg=true)](https://ci.appveyor.com/project/HangfireIO/hangfire-525)  | [![Windows Build Status](https://ci.appveyor.com/api/projects/status/70m632jkycqpnsp9/branch/dev?svg=true)](https://ci.appveyor.com/project/HangfireIO/hangfire-525) 

## Overview

Incredibly easy way to perform **fire-and-forget**, **delayed** and **recurring jobs** in **.NET applications**. CPU and I/O intensive, long-running and short-running jobs are supported. No Windows Service / Task Scheduler required. Backed by Redis, SQL Server, SQL Azure and MSMQ.

Hangfire provides a unified programming model to handle background tasks in a **reliable way** and run them on shared hosting, dedicated hosting or in cloud. You can start with a simple setup and grow computational power for background jobs with time for these scenarios:

- mass notifications/newsletters
- batch import from xml, csv or json
- creation of archives
- firing off web hooks
- deleting users
- building different graphs
- image/video processing
- purging temporary files
- recurring automated reports
- database maintenance
- *…and so on*

Hangfire is a .NET alternative to [Resque](https://github.com/resque/resque), [Sidekiq](https://sidekiq.org), [delayed_job](https://github.com/collectiveidea/delayed_job), [Celery](https://www.celeryproject.org).

![Hangfire Dashboard](https://www.hangfire.io/img/ui/dashboard-sm.png)

Installation
-------------

Hangfire is available as a NuGet package. You can install it using the NuGet Package Console window:

```
PM> Install-Package Hangfire
```

After installation, update your existing [OWIN Startup](https://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection) file with the following lines of code. If you do not have this class in your project or don't know what is it, please read the [Quick start](https://docs.hangfire.io/en/latest/getting-started/index.html) guide to learn about how to install Hangfire.

```csharp
public void Configuration(IAppBuilder app)
{
    GlobalConfiguration.Configuration.UseSqlServerStorage("<connection string or its name>");
    
    app.UseHangfireServer();
    app.UseHangfireDashboard();
}
```

Usage
------

This is an incomplete list of features; to see all of them, check the [official site](https://www.hangfire.io) and the [documentation](https://docs.hangfire.io).

[**Fire-and-forget tasks**](https://docs.hangfire.io/en/latest/background-methods/calling-methods-in-background.html)

Dedicated worker pool threads execute queued background jobs as soon as possible, shortening your request's processing time.

```csharp
BackgroundJob.Enqueue(() => Console.WriteLine("Simple!"));
```

[**Delayed tasks**](https://docs.hangfire.io/en/latest/background-methods/calling-methods-with-delay.html)

Scheduled background jobs are executed only after a given amount of time.

```csharp
BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromDays(7));
```

[**Recurring tasks**](https://docs.hangfire.io/en/latest/background-methods/performing-recurrent-tasks.html)

Recurring jobs have never been simpler; just call the following method to perform any kind of recurring task using the [CRON expressions](https://en.wikipedia.org/wiki/Cron#CRON_expression).

```csharp
RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Daily);
```

**Continuations**

Continuations allow you to define complex workflows by chaining multiple background jobs together.

```csharp
var id = BackgroundJob.Enqueue(() => Console.WriteLine("Hello, "));
BackgroundJob.ContinueWith(id, () => Console.WriteLine("world!"));
```

**Process background tasks inside a web application…**

You can process background tasks in any OWIN-compatible application framework, including [ASP.NET MVC](https://www.asp.net/mvc), [ASP.NET Web API](https://www.asp.net/web-api), [FubuMvc](https://fubu-project.org), [Nancy](https://nancyfx.org), etc. Forget about [AppDomain unloads, Web Garden & Web Farm issues](https://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/) – Hangfire is reliable for web applications from scratch, even on shared hosting.

```csharp
app.UseHangfireServer();
```

**… or anywhere else**

In console applications, Windows Service, Azure Worker Role, etc.

```csharp
using (new BackgroundJobServer())
{
    Console.WriteLine("Hangfire Server started. Press ENTER to exit...");
    Console.ReadLine();
}
```

Questions? Problems?
---------------------

Open-source projects develop more smoothly when discussions are public.

If you have any questions, problems related to Hangfire usage or if you want to discuss new features, please visit the [discussion forum](https://discuss.hangfire.io). You can sign in there using your existing Google or GitHub account, so it's very simple to start using it.

If you've discovered a bug, please report it to the [Hangfire GitHub Issues](https://github.com/HangfireIO/Hangfire/issues?state=open). Detailed reports with stack traces, actual and expected behaviours are welcome.

Related Projects
-----------------

Please see the [Extensions](https://www.hangfire.io/extensions.html) page on the official site.

Building the sources
---------------------

Prerequisites:
* [Razor Generator](https://marketplace.visualstudio.com/items?itemName=DavidEbbo.RazorGenerator): Required if you intend to edit the cshtml files.
* Install the MSMQ service (Microsoft Message Queue Server), if not already installed.

Then, create an environment variable with Variable name `Hangfire_SqlServer_ConnectionStringTemplate` and put your connection string in the Variable value field. Example:

* Variable name: `Hangfire_SqlServer_ConnectionStringTemplate`
* Variable value: `Data Source=.\sqlexpress;Initial Catalog=Hangfire.SqlServer.Tests;Integrated Security=True;`

To build a solution and get assembly files, just run the following command. All build artifacts, including `*.pdb` files, will be placed into the `build` folder. **Before proposing a pull request, please use this command to ensure everything is ok.** Btw, you can execute this command from the Package Manager Console window.

```
build
```

To build NuGet packages as well as an archive file, use the `pack` command as shown below. You can find the result files in the `build` folder.

```
build pack
```

To see the full list of available commands, pass the `-docs` switch:

```
build -docs
```

Hangfire uses [psake](https://github.com/psake/psake) build automation tool. All psake tasks and functions defined in `psake-build.ps1` (for this project) and `psake-common.ps1` (for other Hangfire projects) files. Thanks to the psake project, they are very simple to use and modify!

Razor templates are compiled upon save with the [Razor Generator Visual Studio extension](https://marketplace.visualstudio.com/items?itemName=DavidEbbo.RazorGenerator).  You will need this installed if you want to modify the Dashboard UI.

Reporting security issues 
--------------------------

In order to give the community time to respond and upgrade we strongly urge you report all security issues privately. Please email us at [security@hangfire.io](mailto:security@hangfire.io) with details and we will respond ASAP. Security issues always take precedence over bug fixes and feature work. We can and do mark releases as "urgent" if they contain serious security fixes. 

License
--------

Copyright © 2013-2026 Hangfire OÜ.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses).

Legal
------

By submitting a Pull Request, you disavow any rights or claims to any changes submitted to the Hangfire project and assign the copyright of those changes to Hangfire OÜ.

If you cannot or do not want to reassign those rights (your employment contract for your employer may not allow this), you should not submit a PR. Open an issue and someone else can do the work.

This is a legal way of saying "If you submit a PR to us, that code becomes ours". 99.9% of the time that's what you intend anyways; we hope it doesn't scare you away from contributing.


================================================
FILE: SECURITY.md
================================================
# Reporting security issues 

In order to give the community time to respond and upgrade we strongly urge you report all security issues privately. Please email us at [security@hangfire.io](security@hangfire.io) with details and we will respond ASAP. Security issues always take precedence over bug fixes and feature work. We can and do mark releases as "urgent" if they contain serious security fixes. 


================================================
FILE: appveyor.yml
================================================
# AppVeyor CI build file, https://ci.appveyor.com/project/odinserj/hangfire

# Notes:
#   - Minimal appveyor.yml file is an empty file. All sections are optional.
#   - Indent each level of configuration with 2 spaces. Do not use tabs!
#   - All section names are case-sensitive.
#   - Section names should be unique on each level.

# Please don't edit it manually, use the `build.bat version` command instead.
version: 1.8.23-build-0{build}

image:
  - Visual Studio 2022
  - Ubuntu2004

#---------------------------------#
#    environment configuration    #
#---------------------------------#

# environment variables
environment:
  Hangfire_SqlServer_ConnectionStringTemplate: Server=.\SQL2017;Database={0};User Id=sa;Password=Password12!;TrustServerCertificate=True;PoolBlockingPeriod=NeverBlock
  SIGNPATH_API_TOKEN:
    secure: nvG+jv/K3utFvpHGx/N6Glpv0Wdj0wfBSl8c/tkHbn2AIwGcNe2e4VSOkod7xVpC
  COVERITY_TOKEN:
    secure: r3yBqxgALySnCK9W6uiStqoadsqYtrWQolzxGDVKF74=
  COVERITY_EMAIL:
    secure: wf51HXCiUYxuTe+eo3uQOxqyptSLrH4IEqq0958Rmx8=

# enable service required for tests
services:
  - mssql2017

#---------------------------------#
#       build configuration       #
#---------------------------------#

# Installing MSMQ manually to avoid "Cannot initialize 'msmq' service handler" error
before_build:
  - cmd: powershell Import-Module ServerManager; Add-WindowsFeature MSMQ; net start msmq
  - pwsh: Install-PSResource -Name SignPath -TrustRepository
  - sh: nuget locals all -clear

build_script:  
  - pwsh: IF ($IsWindows -and ($env:APPVEYOR_SCHEDULED_BUILD -or $env:APPVEYOR_REPO_COMMIT_MESSAGE -like "*covscan*")) { .\coverity-scan.ps1 }
  - cmd: IF NOT DEFINED APPVEYOR_SCHEDULED_BUILD build.bat sign
  - sh: chmod +x build.sh; ./build.sh

#---------------------------------#
#       tests configuration       #
#---------------------------------#

test: off

#---------------------------------#
#      artifacts configuration    #
#---------------------------------#

artifacts:
  - path: 'build\**\*.nupkg'
  - path: 'build\**\*.zip'

#---------------------------------#
#      deployment configuration   #
#---------------------------------#

deploy:
  - provider: NuGet
    api_key: 
      secure: eMIULftUVSY15jDNaQZYuEVn7MYcKWXiwlEt2x2Cir6qJPw47EfwH2k+BjaAzxUK
    on:
      appveyor_repo_tag: true


================================================
FILE: build.bat
================================================
@echo off
.nuget\NuGet.exe restore .nuget\packages.config -OutputDirectory packages -UseLockFile -LockedMode -NoCache || exit /b 666
pwsh.exe -NoProfile -ExecutionPolicy RemoteSigned -Command "& {Import-Module '.\packages\psake.*\tools\psake.psm1'; invoke-psake .\psake-project.ps1 %*; if ($psake.build_success -eq $false) { exit 1 } else { exit 0 }; }"
exit /B %errorlevel%


================================================
FILE: build.sh
================================================
#!/bin/bash

set -e;
export Hangfire_SqlServer_ConnectionStringTemplate="Server=tcp:127.0.0.1,1433;Database={0};User Id=sa;Password=Password12!;TrustServerCertificate=True;PoolBlockingPeriod=NeverBlock";

if hash dotnet 2>/dev/null; 
then
  dotnet test -c Release -f netcoreapp3.1 tests/Hangfire.Core.Tests;
  dotnet test -c Release -f net6.0 tests/Hangfire.Core.Tests;
  if hash sqlcmd 2>/dev/null;
  then
    dotnet test -c Release -f netcoreapp3.1 tests/Hangfire.SqlServer.Tests;
    dotnet test -c Release -f net6.0 tests/Hangfire.SqlServer.Tests;
  fi
fi


================================================
FILE: coverity-scan.ps1
================================================
cov-configure --cs
cov-build.exe --dir cov-int build.bat compile

# Compress results.
"Compressing Coverity results..."
$zipEncoderDef = @'
    namespace AnalyseCode {
        public class PortableFileNameEncoder: System.Text.UTF8Encoding {
            public PortableFileNameEncoder() {}
            public override byte[] GetBytes(string entry) {
                return base.GetBytes(entry.Replace("\\", "/"));
            }
        }
    }
'@
Add-Type -TypeDefinition $zipEncoderDef
[IO.Compression.ZipFile]::CreateFromDirectory(
    "$env:APPVEYOR_BUILD_FOLDER\cov-int",
    "$env:APPVEYOR_BUILD_FOLDER\$env:APPVEYOR_PROJECT_NAME.zip",
    [IO.Compression.CompressionLevel]::Optimal,
    $true,  # include root directory
    (New-Object AnalyseCode.PortableFileNameEncoder))

# Upload results to Coverity server.
"Uploading Coverity results..."
Add-Type -AssemblyName "System.Net.Http"
$client = New-Object Net.Http.HttpClient
$client.Timeout = [TimeSpan]::FromMinutes(20)
$form = New-Object Net.Http.MultipartFormDataContent

# Fill token field.
[Net.Http.HttpContent]$formField =
    New-Object Net.Http.StringContent($env:COVERITY_TOKEN)
$form.Add($formField, '"token"')

# Fill email field.
$formField = New-Object Net.Http.StringContent($env:COVERITY_EMAIL)
$form.Add($formField, '"email"')

# Fill file field.
$fs = New-Object IO.FileStream(
    "$env:APPVEYOR_BUILD_FOLDER\$env:APPVEYOR_PROJECT_NAME.zip",
    [IO.FileMode]::Open,
    [IO.FileAccess]::Read)
$formField = New-Object Net.Http.StreamContent($fs)
$form.Add($formField, '"file"', "$env:APPVEYOR_PROJECT_NAME.zip")

# Fill version field.
$formField = New-Object Net.Http.StringContent($env:APPVEYOR_BUILD_VERSION)
$form.Add($formField, '"version"')

# Fill description field.
$formField = New-Object Net.Http.StringContent("AppVeyor scheduled build.")
$form.Add($formField, '"description"')

# Submit form.
$url = "https://scan.coverity.com/builds?project=$env:APPVEYOR_REPO_NAME"
$task = $client.PostAsync($url, $form)
try {
    $task.Wait()  # throws AggregateException on timeout
} catch [AggregateException] {
    throw $_.Exception.InnerException
}
$task.Result
$fs.Close()

================================================
FILE: nuspecs/Hangfire.AspNetCore.nuspec
================================================
<?xml version="1.0"?>
<package>
  <metadata>
    <id>Hangfire.AspNetCore</id>
    <version>%version%</version>
    <title>Hangfire ASP.NET Core Support</title>
    <authors>Sergey Odinokov</authors>
    <owners>HangfireIO, odinserj</owners>
    <projectUrl>https://www.hangfire.io/</projectUrl>
    <repository type="git" url="https://github.com/HangfireIO/Hangfire.git" commit="%commit%" />
    <license type="file">LICENSE.md</license>
    <icon>icon.png</icon>
    <description>ASP.NET Core support for Hangfire, a background job framework for .NET applications.</description>
    <copyright>Copyright © 2017-2026 Hangfire OÜ</copyright>
    <tags>hangfire aspnetcore</tags>
    <releaseNotes><![CDATA[
Release notes are available in our blog https://www.hangfire.io/blog/
Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.

1.8.23
• Fixed – `InvalidOperationException`: The request reached the end of the pipeline without executing the endpoint.

1.8.22
• Added – `MapHangfireDashboardWithNoAuthorizationFilters` method, which does not include local-only filters.
• Changed – Set 404 status code when `MapHangfireDashboard` is used and no dispatcher is found.
• Fixed – `InvalidOperationException` upon receiving a request for 'hangfire/bootstrap.min.css.map'.

1.8.18
• Fixed – Swallow possible `ObjectDisposedException` in the `StopAsync` method.
• Fixed – Avoid `NullReferenceException` when `LocalIpAddress` or `RemoteIpAddress` is null.

1.8.10
• Fixed – Don't check `HasStarted` in `Response.WriteAsync` to avoid breaking dispatchers.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add `HangfireIO` as a package owner.

1.8.9
• Fixed – Don't attempt to write response headers when response has already started (by @maliming).
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.

1.8.0
• Breaking – Make the package to be dependent on Hangfire.NetCore and use the same types.
• Added – `IApplicationBuilder.UseHangfireServer` that accepts custom factory for `IBackgroundProcessingServer`.
]]>
    </releaseNotes>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Microsoft.AspNetCore.Http.Abstractions" version="1.0.0" />
        <dependency id="Microsoft.AspNetCore.Antiforgery" version="1.0.0" />
        <dependency id="Hangfire.NetCore" version="[%version%]" />
      </group>
      <group targetFramework="netstandard1.3">
        <dependency id="NETStandard.Library" version="1.6.0" />
        <dependency id="System.ComponentModel" version="4.0.1" />
        <dependency id="Microsoft.AspNetCore.Http.Abstractions" version="1.0.0" />
        <dependency id="Microsoft.AspNetCore.Antiforgery" version="1.0.0" />
        <dependency id="Hangfire.NetCore" version="[%version%]" />
      </group>
      <group targetFramework="netstandard2.0">
        <dependency id="Microsoft.AspNetCore.Http.Abstractions" version="2.0.0" />
        <dependency id="Microsoft.AspNetCore.Antiforgery" version="2.0.0" />
        <dependency id="Hangfire.NetCore" version="[%version%]" />
      </group>
      <group targetFramework="net461">
        <dependency id="Microsoft.AspNetCore.Http.Abstractions" version="2.0.0" />
        <dependency id="Microsoft.AspNetCore.Antiforgery" version="2.0.0" />
        <dependency id="Hangfire.NetCore" version="[%version%]" />
      </group>	  
      <group targetFramework="netcoreapp3.0">
        <dependency id="Hangfire.NetCore" version="[%version%]" />
      </group>
    </dependencies>
    <frameworkReferences>
      <group targetFramework=".NETCoreApp3.0">
        <frameworkReference name="Microsoft.AspNetCore.App" />
      </group>
    </frameworkReferences>
  </metadata>
  <files>
    <file src="net451\Hangfire.AspNetCore.dll" target="lib\net451" />
    <file src="net451\Hangfire.AspNetCore.xml" target="lib\net451" />

    <file src="netstandard1.3\Hangfire.AspNetCore.dll" target="lib\netstandard1.3" />
    <file src="netstandard1.3\Hangfire.AspNetCore.xml" target="lib\netstandard1.3" />

    <file src="netstandard2.0\Hangfire.AspNetCore.dll" target="lib\netstandard2.0" />
    <file src="netstandard2.0\Hangfire.AspNetCore.xml" target="lib\netstandard2.0" />
	
    <file src="net461\Hangfire.AspNetCore.dll" target="lib\net461" />
    <file src="net461\Hangfire.AspNetCore.xml" target="lib\net461" />

    <file src="netcoreapp3.0\Hangfire.AspNetCore.dll" target="lib\netcoreapp3.0" />
    <file src="netcoreapp3.0\Hangfire.AspNetCore.xml" target="lib\netcoreapp3.0" />

    <file src="..\nuspecs\icon.png" />

    <file src="LICENSE.md" />
    <file src="COPYING" />
    <file src="COPYING.LESSER" />
    <file src="NOTICES" />
    <file src="LICENSE_STANDARD" />
    <file src="LICENSE_ROYALTYFREE" />
  </files>
</package>

================================================
FILE: nuspecs/Hangfire.Core.nuspec
================================================
<?xml version="1.0"?>
<package>
  <metadata>
    <id>Hangfire.Core</id>
    <version>%version%</version>
    <title>Hangfire Core Components</title>
    <authors>Sergey Odinokov</authors>
    <owners>HangfireIO, odinserj</owners>
    <projectUrl>https://www.hangfire.io/</projectUrl>
    <repository type="git" url="https://github.com/HangfireIO/Hangfire.git" commit="%commit%" />
    <license type="file">LICENSE.md</license>
    <icon>icon.png</icon>
    <readme>README.md</readme>
    <summary>An easy way to perform fire-and-forget, delayed and recurring tasks in .NET applications. No Windows Service required.</summary>
    <description>
An easy and reliable way to perform fire-and-forget, delayed and recurring, long-running, short-running, CPU or I/O intensive tasks in .NET applications. No Windows Service / Task Scheduler required.
Backed by Redis, SQL Server, SQL Azure or MSMQ. This is a .NET alternative to Sidekiq, Resque and Celery.
https://www.hangfire.io/
    </description>
    <copyright>Copyright © 2013-2026 Hangfire OÜ</copyright>
    <tags>Hangfire OWIN Long-Running Background Fire-And-Forget Delayed Recurring Tasks Jobs Scheduler Threading Queues</tags>
    <releaseNotes><![CDATA[
Release notes are available in our blog https://www.hangfire.io/blog/
Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.

1.8.23
• Changed – Use stable sorting algorithm for background job filters again (by @jirikanda).
• Fixed – Add missing keys for Swedish translation (by @karl-sjogren).
• Fixed – Custom `AutomaticRetryAttribute` is ignored under certain conditions (by @jirikanda).
• Project – Use `TypeNameAssemblyFormatHandling` in tests with .NET 6 (by @viktor-vintertass).

1.8.22
• Added – `IGlobalConfiguration.UseNoOpLogProvider` method to disable logging.
• Changed – Un-deprecate interval methods in the `Cron` class, add remarks in docs instead.
• Changed – Bump internalized version of Cronos to 0.11.1.
• Changed – Bump internalized version of Microsoft.Owin to 4.2.3.
• Fixed – Serialization of arrays of nested types `SimpleAssemblyTypeSerializer`.
• Fixed – Remove wrong escaping characters in Portuguese translations on the "Servers" page.
• Fixed – Properly remove registered `IBackgroundProcessingServer` instances on OWIN app shutdown.
• Fixed – `AspNetShutdownDetector` for early ASP.NET shutdown detection is not working (regression from 1.7.30).
• Project – Replace the `netcoreapp3.1` target with the `net8.0` one in tests.

1.8.21
• Added – `FailedState.IncludeFileInfo` to optionally show/hide line numbers in exceptions in Failed state.
• Changed – Include line numbers for exceptions by default when available.
• Fixed – Portuguese (Brazil) translations in Strings.pt-BR.resx (by @pedro-cons).
• Fixed – Static `BackgroundJob` class always acquires the most current `JobStorage.Current` instance.
• Fixed – Static `RecurringJob` class always acquires the most current `JobStorage.Current` instance.

1.8.20
• Fixed – Glyphicons from Bootstrap are not displaying after upgrading to version 1.8.19.

1.8.19
• Changed – Update Bootstrap to the custom version of 3.4.2 to avoid false alerts on unused features.
• Fixed – Typos in Portuguese translation (by @VianaArthur).
• Fixed – Unnecessary recurring job update transaction when nothing is changed after an error.

1.8.18
• Added – `DashboardOptions.ServerPossiblyAbortedThreshold` to configure a custom threshold for "possibly aborted" warnings.
• Fixed – Expired jobs are still shown on the "Retries" page in some cases.
• Fixed – Issues with `CultureInfo`-related differences after upgrading to 1.8.15–1.8.17.
• Fixed – Don't leak `AsyncLocal` values from synchronous background job methods.
• Fixed – Don't throw an exception when passing the `Job.Args` property to the `Job` class' constructor.
• Project – Make the lock file usable for both .NET 8.0 and .NET 9.0 builds.
• Project – Make code generation for `cshtml` files working on newer platforms.

1.8.16
• Changed – Include fewer stack frames in exceptions come from `IServerFilter` implementations.
• Changed – Don't include file information in the `ExceptionDetails` property of a FailedState instance.
• Changed – Switch back to `CancellationEvent` usage instead of `CancellationToken.WaitHandle`.
• Fixed – Don't commit external transaction in the `BackgroundJobStateChanger` implementation.
• Fixed – Use safe default serializer settings for Newtonsoft.Json 12.X and below.
• Project – Fix builds for the `net451` platform when using .NET 9.0.
• Project – Significantly reduce execution time of unit tests in the `RecurringJobSchedulerFacts` class.
• Project – Bump `Microsoft.CodeAnalysis.NetAnalyzers` package to version 9.0.0.

1.8.15
• Added – New `AutomaticRetryAttribute.ExceptOn` property to skip retries for specific exceptions.
• Changed – Refactor filters pipeline to use less LINQ magic and fewer allocations.
• Changed – Use `GetCultureInfo` instead of creating an instance in the `CaptureCultureAttribute` filter.
• Changed – Cache some immutable data to avoid extra allocations.
• Fixed – Improve loopback address detection (by @meziantou).
• Fixed – Reformulate misleading error messages regarding retry timings (by @RGFuaWVs).
• Fixed – Problem with missing localizations in the previous version.
• Fixed – Don't hide exception details on Failed Jobs page when the exception message is empty.
• Fixed – Problems with the first restore when using the `build.bat` command.
• Fixed – Better display of canceled recurring jobs in dashboard.
• Fixed – Less overall allocations with using static delegates and struct-based iterators.
• Fixed – Improve precision of some diagnostic messages in the wait protection logic.
• Fixed – Make all private and internal classes sealed to improve code consistency.
• Fixed – Less overall pressure on garbage collector.

1.8.13 and 1.8.14
• Changed – Partial cache for serialization and deserialization in `InvocationData` to produce less strings.
• Changed – Add caching for default type serializer and resolver.
• Changed – Don't let `JobFilter`-related logic to show up in profilers.
• Changed – Modify `IProfiler` to be less allocatey for diagnostic purposes that almost never run.
• Changed – Prefer using `CancellationToken.WaitHandle` again, since early .NET Core days are gone.
• Changed – Fewer allocations when working with `IStateHandler` collections in a state machine.
• Fixed – Redirect the "System.Private.Xml.Linq" assembly to the "System.Xml.Linq" one for better interoperability.
• Fixed – Don't throw `KeyNotFoundException` when recurring job is malformed.
• Fixed – Proper relative path calculation in `UrlHelper.To` for OWIN-based Dashboard UI (by @LordJZ).
• Fixed – Typo in the Turkish localization file (by @ismkdc).
• Project – Switch to a modern PowerShell 7+ to speed up SignPath installation on AppVeyor.

1.8.12
• Added – `MaxDegreeOfParallelismForSchedulers` experimental server option if supported by storage.
• Added – Experimental support for parallel execution of the delayed job scheduler.
• Added – Experimental support for parallel execution of the recurring job scheduler.
• Fixed – Recurring job is scheduled to the past after recovering from error with `AddOrUpdate`.
• Fixed – `AddOrUpdate` triggers execution of a recurring job, even if its next execution is in the future.
• Fixed – Two very minor errors in the Swedish localization file (by @Uglack).

1.8.11
• Changed – Add icons and fix metadata for NuGet packages.
• Changed – Bump ILRepack to version 2.0.27 to avoid problems with internalizing.
• Fixed – "Type exists in both Cronos and Hangfire.Core" exception.

1.8.10
• Changed – Added Norwegian translations for new keys (by @khellang).
• Changed – Update Brazilian Portuguese translation (by @HugoAlames).
• Changed – Bump Cronos dependency to version 0.8.3.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add `HangfireIO` as a package owner.

1.8.9
• Changed – Use `Environment.MachineName` as a server name if other environment vars aren't available.
• Changed – Bump the Cronos package version from 0.7.1 to 0.8.1.
• Changed – Improve portuguese translations (by @filipe-silva).
• Fixed – Possible `NullReferenceException` on the Deleted Jobs page (regression from 1.8.7).
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the `net6.0` platform.
• Project – Modernise the build system and clean up the build scripts.

1.8.7
• Added – Allow using macro expressions like `@hourly` for recurring jobs (by @MuhamedAbdalla).
• Added – Show storage time in page footer when supported by storage implementation.
• Added – Show duration and latency columns separately on the Succeeded Jobs page when supported.
• Added – Show the exception column on the Deleted Jobs page when available and supported by storage.
• Changed – Reduce package size by stripping unnecessary locales in Moment.js.
• Changed – Bump Microsoft.Owin package to version 4.2.2.
• Changed – Log a warning message when a server listens to unsupported queue names.
• Changed – Use storage time, if available, to show delay warnings in the Dashboard UI.
• Fixed – Proper rendering of generic arguments on the Job Details page (by @olivermue).
• Fixed – Language inconsistency in the Dashboard UI related to date/time description.
• Fixed – Big stack traces take too long time to be formatted.
• Fixed – Don't throw `NullReferenceException` from the Scheduled Jobs page when there's a job with missing data.
• Fixed – Don't throw `NullReferenceException` from the Processing Jobs page when there's a job with missing data.
• Fixed – CSS for Enqueued and Deleted state cards in dark theme.
• Fixed – Log errors instead of throwing an exception when a particular table can't be cleaned.
• Fixed – Avoid logging fatal exceptions when stopping a faulting background process.
• Fixed – Don't display checkboxes in the Dashboard UI when job details can not be fetched.
• Fixed – Scrollbars in WebKit-based browsers are now dark in dark mode.
• Project – Disable tests for `netcoreapp1.0` and `netcoreapp2.1` targets since they aren't supported in AppVeyor.
• Project – Add a `net6.0` target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.

1.8.6
• Changed – Update jQuery library in Dashboard UI to version 3.7.1.
• Changed – Mark all types in Hangfire.Annotations with `EditorBrowsableAttribute(Never)`.
• Changed – Change state card colors for the Awaiting state to match the Scheduled state.
• Fixed – Exception when deserializing an instance of the `AutomaticRetryAttribute` class from JSON.
• Fixed – Add serialization-related constructors for all the exception classes.
• Fixed – Use invariant culture or ordinal comparisons for internal strings.
• Fixed – Use invariant culture when formatting key names for metrics.
• Fixed – Use `CurrentCulture` instead of `CurrentUICulture` when displaying time.
• Project – Enable running static analysis by Coverity Scan weekly.
• Project – Enable mandatory static analysis by the Microsoft.CodeAnalysis.NetAnalyzers package.
• Project – Change MSBuild path when building using newer .NET SDKs for Razor views.

1.8.5
• Added – Possibility to inform a `FaviconPath` on `DashboardOptions` (by @cezar-pimentel).
• Fixed – Inability to restore a disabled recurring job, regression in version 1.8.3.
• Fixed – Make it possible to serialize the `AutomaticRetryAttribute` filter to JSON.

1.8.4
• Added – Pass server id from a worker to the `PerformContext.ServerId` property available in filters.
• Fixed – Send heartbeats until full background processing server shutdown.

1.8.3
• Changed – Allow to configure `MaxLinesInStackTrace` for a particular `FailedState` instance.
• Fixed – Remove job id from schedule when it's not in the Scheduled state for some reason.
• Fixed – Missing invocations of recurring jobs when the new "Ignorable" option is used.
• Fixed – Make `DisableConcurrentExecutionAttribute` and `LatencyTimeoutAttribute` serializable.

1.8.2
• Changed – Disable transactional job creation feature appeared in 1.8.0.
• Fixed – "Can not start continuation XXX" error when storage supports transactional job creation.

1.8.1
• Added – `MisfireHandlingMode.Ignorable` to avoid scheduling recurring jobs on missed schedules.
• Added – Support disabling dark mode via the `DashboardOptions.DarkModeEnabled` property.
• Changed – Remove the 1-hour limitation for the `WithJobExpirationTimeout` configuration method.
• Fixed – Add missing `UseDefaultCulture` configuration method overloads.
• Fixed – Add missing `UseDashboardStylesheet` and `UseJobDetailsRenderer` configuration methods.
• Fixed – Give even more space for identifiers on the Recurring Jobs page.
• Fixed – `state-card-state-active` color is not very dark (by @coolhome).
• Fixed – Slightly change chart proportions to fit 4K in Dashboard UI.

1.8.0
• Breaking – Dropped the `NET45` platform target in favor of the `NET451` target to support Visual Studio 2022.
• Added – Introduce the `Job.Queue` property, so jobs now can have their own queue specified.
• Added – Method overloads to create background jobs directly with a custom default queue.
• Added – Method overloads to create recurring jobs directly with a custom default queue.
• Added – `IBackgroundJobClient.Create` method overloads with the new `queue` parameter.
• Added – Allow to filter exception types in `AutomaticRetryAttribute` by using the new `OnlyOn` property.
• Added – `DeletedState` now has the persisted `Exception` property populated after a failure.
• Added – `JobContinuationOptions.OnlyOnDeletedState` to create continuations after a failure.
• Added – `Exception` job parameter is passed to continuation when `UseResultsInContinuations` method is used.
• Added – `FromExceptionAttribute` to deal with an antecedent exception in a background job continuation.
• Added – Make it possible to specify multiple `JobContinuationOptions` values for a continuation.
• Added – `BackgroundJobServerOptions.IsLightweightServer` option to run a server with no storage processes.
• Added – Ability to use custom formattable resource identifiers for the `DisableConcurrentExecution` filter.
• Added – Pass `ServerId` to `FailedState` instances to simplify the debugging on different servers.
• Added – Allow to pass job parameters when creating a job (by @brian-knoll-micronetonline).
• Added – `MisfireHandlingMode.Strict` to create a job for each missed recurring job occurrence.
• Added – Support for default culture and UI culture via the `UseDefaultCulture` configuration method.
• Added – Introduce the `captureDefault` parameter in the `CaptureCulture` filter.
• Added – `IGlobalConfiguration.UseFilterProvider` extension method to unify the configuration.
• Added – Built-in `Remove` method for `JobFilterCollection` to remove global filters based on their type.
• Added – `CompatibilityLevel.Version_180` flag to avoid storing culture parameters when they are the same as the default ones.
• Changed – Create job atomically when `Transaction.CreateJob` feature is supported by the storage.
• Changed – Query time from storage in recurring and delayed schedulers when supported by storage.
• Changed – Move job to the `DeletedState` instead of `SucceededState` when its invocation was canceled by a filter.
• Changed – Speedup delayed jobs when a custom default queue is specified by avoiding extra state transition.
• Changed – Use UI culture from `CurrentCulture` parameter when `CurrentUICulture` one is missing.
• Changed – Increase the default value for the `BackgroundJobServerOptions.StopTimeout` to 500 ms.
• Deprecated – `AddOrUpdate` overloads with optional params defined in the `RecurringJobManagerExtensions` class.
• Deprecated – `AddOrUpdate` overloads with optional parameters defined in the `RecurringJob` class.
• Deprecated – `AddOrUpdate` method overloads with no `recurringJobId` parameter.
• Deprecated – `RecurringJobOptions.QueueName` property, new methods should be used instead.
• Breaking – Dropped `NET45` platform target in favor of `NET451` target to support Visual Studio 2022.

Dashboard UI
• Added – Dark mode support for Dashboard UI depending on the system settings (by @danillewin).
• Added – Dashboard UI now has a full-width layout to display more data (by @danillewin).
• Added – Allow to add custom JavaScript and CSS files to the Dashboard UI via the `DashboardRoutes` class.
• Added – `DefaultRecordsPerPage` property on the `DashboardOptions` class (by @PaulARoy).
• Added – `IGlobalConfiguration.UseJobDetailsRenderer` method for custom renderers for the Job Details page.
• Added – Display deleted jobs in the Realtime and History graphs when supported by storage.
• Added – `IGlobalConfiguration.UseDashboardMetrics` extension method to pass multiple metrics at once.
• Added – State renderer for the `DeletedState` to display its new exception property.
• Added – Support for new `MonitoringApi` methods for the Awaiting Jobs page.
• Changed – Make it possible to display methods of non-loaded jobs in the Dashboard UI when supported by storage.
• Changed – Improved display of realtime chart with more accents on failed and deleted jobs.
• Changed – Don't display the queue name in the state transition list when it's the `default` one.
• Changed – Display scheduled job count when the enqueued count is zero on the main metric.

Extensibility
• Added – `Factory`, `StateMachine`, and `Performer` properties to context classes to avoid injecting services.
• Added – Allow to pass custom data to `ApplyStateContext` and `ElectStateContext` instances.
• Added – Preserve custom data dictionary between the entire filter chain.
• Added – Allow to pass a transaction to background job state changer when new methods are implemented.
• Changed – Ignore some members when serializing a `JobFilterAttribute` instance to decrease the payload size.

Storage
• Added – Virtual `JobStorage.GetReadOnlyConnection` method intended to return `JobStorageConnection` for replicas.
• Added – Virtual `JobStorage.HasFeature` method for querying optional features.
• Added – The `JobStorageFeatures` class to avoid using magic strings in storage features.
• Added – Optional `GetSetCount`, `GetSetContains`, and `GetUtcDateTime` methods for the `JobStorageConnection` class.
• Added – Optional `AcquireDistributedLock` and `RemoveFromQueue` methods for the `JobStorageTransaction` class.
• Added – Optional `CreateJob` and `SetJobParameter` methods for the `JobStorageTransaction` class.
• Added – Optional `ParametersSnapshot` property for `BackgroundJob` and `JobData` classes to minimize roundtrips in the future.
• Added – Support for transactional acknowledgment using a new storage method for better handling some data loss scenarios.
• Added – Fetch `Retries` and `Awaiting` metrics in `StatisticsDto` properties when supported by storage.
• Added – The `JobStorageMonitor` class with more available methods for the new features.
• Changed – Allow to query job parameters without additional roundtrip when supported by storage.
• Changed – Expose state data dictionaries in list DTOs when supported by storage.
• Changed – Rely on storage indexing with the `Monitoring.AwaitingJobs` feature.

Internals
• Added – `IBackgroundProcess.UseBackgroundPool` now allows to pass thread configuration logic.
• Added – `BackgroundJobServerOptions.WorkerThreadConfigurationAction` option for custom thread configuration.
• Changed – Allow changing queues on the fly with custom worker configuration.
• Changed – Avoid storage roundtrip to query job data in worker, take data from previous state change.
• Changed – `FromParameterAttribute`-based logic now always overwrites arguments, even with non-null values.
• Changed – Turn the `JobContinuationOptions` enum into flags while still possible.
• Changed – Re-implement `TaskExtensions.WaitOneAsync` only with the `RegisterWaitForSingleObject` method.
• Changed – `ServerHeartbeatProcess` now uses `ThreadPriority.AboveNormal` to prioritize heartbeats.
]]>
    </releaseNotes>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Owin" version="1.0" />
        <dependency id="Newtonsoft.Json" version="5.0.1" />
      </group>
      <group targetFramework="net46">
        <dependency id="Owin" version="1.0" />
        <dependency id="Newtonsoft.Json" version="5.0.1" />
      </group>
      <group targetFramework="netstandard1.3">
        <dependency id="NETStandard.Library" version="1.6.0" />
        <dependency id="System.Threading.Thread" version="4.0.0" />
        <dependency id="System.Threading.ThreadPool" version="4.0.10" />
        <dependency id="Newtonsoft.Json" version="9.0.1" />
      </group>
      <group targetFramework="netstandard2.0">
        <dependency id="Newtonsoft.Json" version="11.0.1" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="net451\Hangfire.Core.dll" target="lib\net451" />
    <file src="net451\Hangfire.Core.xml" target="lib\net451" />

    <file src="net451\**\Hangfire.Core.resources.dll" target="lib\net451" />

    <file src="net46\Hangfire.Core.dll" target="lib\net46" />
    <file src="net46\Hangfire.Core.xml" target="lib\net46" />

    <file src="net46\**\Hangfire.Core.resources.dll" target="lib\net46" />
    
    <file src="netstandard1.3\Hangfire.Core.dll" target="lib\netstandard1.3" />
    <file src="netstandard1.3\Hangfire.Core.xml" target="lib\netstandard1.3" />

    <file src="netstandard1.3\**\Hangfire.Core.resources.dll" target="lib\netstandard1.3" />

    <file src="netstandard2.0\Hangfire.Core.dll" target="lib\netstandard2.0" />
    <file src="netstandard2.0\Hangfire.Core.xml" target="lib\netstandard2.0" />

    <file src="netstandard2.0\**\Hangfire.Core.resources.dll" target="lib\netstandard2.0" />

    <file src="..\nuspecs\icon.png" />

    <file src="README.md" />    
    <file src="LICENSE.md" />
    <file src="COPYING" />
    <file src="COPYING.LESSER" />
    <file src="NOTICES" />
    <file src="LICENSE_STANDARD" />
    <file src="LICENSE_ROYALTYFREE" />
  </files>
</package>

================================================
FILE: nuspecs/Hangfire.NetCore.nuspec
================================================
<?xml version="1.0"?>
<package>
  <metadata>
    <id>Hangfire.NetCore</id>
    <version>%version%</version>
    <title>Hangfire .NET Core's Worker Service Support</title>
    <authors>Sergey Odinokov</authors>
    <owners>HangfireIO, odinserj</owners>
    <projectUrl>https://www.hangfire.io/</projectUrl>
    <repository type="git" url="https://github.com/HangfireIO/Hangfire.git" commit="%commit%" />
    <license type="file">LICENSE.md</license>
    <icon>icon.png</icon>
    <description>.NET Core's Worker Service host support for Hangfire, a background job framework for .NET applications.</description>
    <copyright>Copyright © 2019-2026 Hangfire OÜ</copyright>
    <tags>hangfire netcore</tags>
    <releaseNotes><![CDATA[
Release notes are available in our blog https://www.hangfire.io/blog/
Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.

1.8.10
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add `HangfireIO` as a package owner.

1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.

1.8.6
• Fixed – Include assembly information to the Hangfire.NetCore assembly.

1.8.4
• Changed – Send the stop signal earlier in the shutdown pipeline when hosting in .NET Core 3.1 or higher.
• Changed – Set processing server to null in hosted service to avoid `ObjectDisposedException`.
• Fixed – Other `IHostedService` implementations can block Hangfire server from being stopped.
      
1.8.1
• Fixed – Add `net461` target for Hangfire.NetCore package to avoid missing method exceptions.

1.8.0
• Added – `IApplicationBuilder.UseHangfireServer` that accepts custom factory for `IBackgroundProcessingServer`.
• Added – `net451` and `netstandard1.3` targets for the package.
• Changed – Use `netstandard2.1` target instead of `netcoreapp3.0` for the package.
• Changed – Send the "stop" signal earlier when the host supports .NET Standard 2.1.
• Changed – Don't throw `ObjectDisposedException` when hosted service is disposed twice.
]]>
    </releaseNotes>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.0.0" />
        <dependency id="Microsoft.Extensions.Logging.Abstractions" version="1.0.0" />
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>
      <group targetFramework="net461">
        <dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="2.0.0" />
        <dependency id="Microsoft.Extensions.Hosting.Abstractions" version="2.0.0" />
        <dependency id="Microsoft.Extensions.Logging.Abstractions" version="2.0.0" />
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>
      <group targetFramework="netstandard1.3">
        <dependency id="NETStandard.Library" version="1.6.0" />
        <dependency id="System.ComponentModel" version="4.0.1" />
        <dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.0.0" />
        <dependency id="Microsoft.Extensions.Logging.Abstractions" version="1.0.0" />
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>
      <group targetFramework="netstandard2.0">
        <dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="2.0.0" />
        <dependency id="Microsoft.Extensions.Hosting.Abstractions" version="2.0.0" />
        <dependency id="Microsoft.Extensions.Logging.Abstractions" version="2.0.0" />
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>
      <group targetFramework="netstandard2.1">
        <dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="3.0.0" />
        <dependency id="Microsoft.Extensions.Hosting.Abstractions" version="3.0.0" />
        <dependency id="Microsoft.Extensions.Logging.Abstractions" version="3.0.0" />
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="net451\Hangfire.NetCore.dll" target="lib\net451" />
    <file src="net451\Hangfire.NetCore.xml" target="lib\net451" />

    <file src="net461\Hangfire.NetCore.dll" target="lib\net461" />
    <file src="net461\Hangfire.NetCore.xml" target="lib\net461" />

    <file src="netstandard1.3\Hangfire.NetCore.dll" target="lib\netstandard1.3" />
    <file src="netstandard1.3\Hangfire.NetCore.xml" target="lib\netstandard1.3" />

    <file src="netstandard2.0\Hangfire.NetCore.dll" target="lib\netstandard2.0" />
    <file src="netstandard2.0\Hangfire.NetCore.xml" target="lib\netstandard2.0" />

    <file src="netstandard2.1\Hangfire.NetCore.dll" target="lib\netstandard2.1" />
    <file src="netstandard2.1\Hangfire.NetCore.xml" target="lib\netstandard2.1" />

    <file src="..\nuspecs\icon.png" />

    <file src="LICENSE.md" />
    <file src="COPYING" />
    <file src="COPYING.LESSER" />
    <file src="NOTICES" />
    <file src="LICENSE_STANDARD" />
    <file src="LICENSE_ROYALTYFREE" />
  </files>
</package>


================================================
FILE: nuspecs/Hangfire.SqlServer.MSMQ.nuspec
================================================
<?xml version="1.0"?>
<package>
  <metadata>
    <id>Hangfire.SqlServer.MSMQ</id>
    <version>%version%</version>
    <title>Hangfire MSMQ Queues for SQL Server Storage</title>
    <authors>Sergey Odinokov</authors>
    <owners>HangfireIO, odinserj</owners>
    <projectUrl>https://www.hangfire.io/</projectUrl>
    <repository type="git" url="https://github.com/HangfireIO/Hangfire.git" commit="%commit%" />
    <license type="file">LICENSE.md</license>
    <icon>icon.png</icon>
    <description>MSMQ queues support for SQL Server job storage implementation for Hangfire, a background job framework for .NET applications.</description>
    <copyright>Copyright © 2014-2026 Hangfire OÜ</copyright>
    <tags>Hangfire SqlServer MSMQ</tags>
    <releaseNotes><![CDATA[https://www.hangfire.io/blog/

1.8.10
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add `HangfireIO` as a package owner.
  
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.

1.8.0
• Breaking – Dropped the `NET45` platform target in favor of the `NET451` target to support Visual Studio 2022.
    
1.6.3
• Fixed – Prevent MSMQ transactions from timing out after 1 minute of processing.
    
1.6.2
• Fixed – Public MSMQ queue paths are parsed correctly now, when determining the queue length.
    
1.6.0
• Fixed – Package now depends on the latest Hangfire.SqlServer instead of version 1.2.2.
    
1.5.7
• Fixed – Dashboard crashing when trying to get the MSMQ queue length (by @yangman).
    
1.5.0
• Added – Support for remote MSMQ queues through DTC transactions.

1.4.0
• Changed – Speed up `GetCount` method with native implementation.
• Fixed – Incorrect order of fetching when multiple queues used.
]]>
    </releaseNotes>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Hangfire.Core" version="[%version%]" />
        <dependency id="Hangfire.SqlServer" version="[%version%]" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="net451\Hangfire.SqlServer.Msmq.dll" target="lib\net451" />
    <file src="net451\Hangfire.SqlServer.Msmq.xml" target="lib\net451" />

    <file src="..\nuspecs\icon.png" />

    <file src="LICENSE.md" />
    <file src="COPYING" />
    <file src="COPYING.LESSER" />
    <file src="NOTICES" />
    <file src="LICENSE_STANDARD" />
    <file src="LICENSE_ROYALTYFREE" />
  </files>
</package>

================================================
FILE: nuspecs/Hangfire.SqlServer.nuspec
================================================
<?xml version="1.0"?>
<package>
  <metadata>
    <id>Hangfire.SqlServer</id>
    <version>%version%</version>
    <title>Hangfire SQL Server Storage</title>
    <authors>Sergey Odinokov</authors>
    <owners>HangfireIO, odinserj</owners>
    <projectUrl>https://www.hangfire.io/</projectUrl>
    <repository type="git" url="https://github.com/HangfireIO/Hangfire.git" commit="%commit%" />
    <license type="file">LICENSE.md</license>
    <icon>icon.png</icon>
    <description>SQL Server 2008+ (including Express), SQL Server LocalDB and SQL Azure storage support for Hangfire, a background job framework for .NET applications.</description>
    <copyright>Copyright © 2013-2026 Hangfire OÜ</copyright>
    <tags>Hangfire SqlServer SqlAzure LocalDB</tags>
    <releaseNotes><![CDATA[
Release notes are available in our blog https://www.hangfire.io/blog/
Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.

1.8.22
• Fixed – `InvalidCastException` when creating a background job with Schema 5 (regression from 1.8.15).
• Project – Replace the `netcoreapp3.1` target with the `net8.0` one in tests.

1.8.21
• Added – `SqlServerStorageOptions.DisableTransactionScope` option for .NET Framework targets.
• Project – Port Monitoring API tests from the Hangfire.InMemory storage for better coverage.
• Project – Run tests for different targets in parallel with different databases.

1.8.19
• Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.

1.8.17
• Fixed – `InvalidCastException` while fetching a job with older schemas regression from 1.8.16.

1.8.16
• Changed – Use vanilla ADO.NET when fetching a job in the `SqlServerJobQueue` implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the `LockTimeout` time when calling the `sp_getapplock` procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the `net6.0` platform.
• Project – Reduce execution time of integration tests.
• Project – Disable `PoolBlockingPeriod` setting on AppVeyor to handle transient test failures.

1.8.15
• Changed – Use query template caching based on schema name to avoid excessive `string` allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use `QuerySingle`* or `ReadSingle`* where possible to avoid allocating lists.
• Changed – Unify `DbCommand` and `DbParameter` creation logic to improve code consistency.

1.8.13 and 1.8.14
• Changed – Limit polling queries when queues are empty with a semaphore for all configurations.
• Changed – Use per-queue signaling for same-process workers, instead of having a global signal.
• Fixed – Don't silently truncate queue names, throw an exception instead.
• Project – Decrease delays in SQL Server-related tests to complete them faster.

1.8.12
• Fixed – Populate `InvocationData` and `LoadException` properties in `JobDetails` method results.

1.8.10
• Changed – Bump Dapper for the `netstandard2.0` platform to version 2.1.28.
• Changed – Bump Dapper for `net451` and `netstandard1.3` platforms to version 1.60.6.
• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add `HangfireIO` as a package owner.
      
1.8.9
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the `net6.0` platform.

1.8.7
• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for `netcoreapp1.0` and `netcoreapp2.1` targets since they aren't supported in AppVeyor.
• Project – Add a `net6.0` target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.

1.8.6
• Fixed – Exception in Dashboard UI when schema version is not present in a database.
• Fixed – `DbCommand` resource leak when releasing a lock detected by static analysis.
• Fixed – Don't add SQL Server-related metrics multiple times in Dashboard UI.

1.8.5
• Fixed – "Query processor could not produce a query plan" when removing expired counters in `Schema 5`.

1.8.2
• Fixed – `InvalidOperationException` with new dashboard metrics when a database has multiple data/log files.

1.8.1
• Fixed – Blocked workers regression since 1.7.33 when using multiple servers inside a process.
• Fixed – Target schema version is less than the current schema version error.
• Fixed – Implement database metrics without the need for additional permissions.
• Fixed – Use the `forceseek` table hint whenever possible to avoid performance drops.

1.8.0
• Breaking – Prioritise Microsoft.Data.SqlClient package over System.Data.SqlClient one.
• Breaking – Dropped the `NET45` platform target in favor of the `NET451` target to support Visual Studio 2022.
• Added – `Schema 8` migration with fixed `JobQueue.Id` column to use the `bigint` type.
• Added – `Schema 9` migration that creates an index for the `State.CreatedAt` column.
• Added – Automatic client package detection based on available types, preferring `System.Data.SqlClient` (by @0xced).
• Added – `SqlServerStorageOptions.DbProviderFactory` option to use a custom provider factory.
• Added – Clean up of old state entries of a non-finished job when `InactiveStateExpirationTimeout` is set.
• Added – `TryAutoDetectSchemaDependentOptions` option to automatically enable options based on the schema.
• Added – Optional experimental transactional acknowledge for SQL Server (`UseTransactionalAcknowledge` option).
• Added – Implement the `Connection.GetUtcDateTime` feature to make work the new changes in schedulers.
• Added – `SqlServerStorage.SchemaVersion` metric for Dashboard UI.
• Added – `DefaultQueueProvider` option to specify a custom default queue provider.
• Changed – Remove dependency on System.Data.SqlClient for Hangfire.SqlServer (by @0xced).
• Changed – Set default value for the `QueuePollInterval` option to `TimeSpan.Zero`.
• Changed – Polling delay when `QueuePollInterval` is set to zero now defaults to 200 ms.
• Changed – Sliding invisibility timeout-based fetching method is now used by default with a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the `UseRecommendedIsolationLevel` option by default.
• Changed – `GetJobData` now populates the `JobData.ParametersSnapshot` property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the `Transaction.AcquireDistributedLock` feature.
• Changed – Implement the `GetSetCount.Limited feature`.
• Changed – Implement the `GetSetContains feature`.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the `Monitoring.AwaitingJobs` feature for SQL storage.
• Deprecated – `UsePageLocksOnDequeue` option is now obsolete and doesn't affect anything.
]]>
    </releaseNotes>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>
      
      <group targetFramework="netstandard1.3">
        <dependency id="NETStandard.Library" version="1.6.0" />
        <dependency id="System.Data.Common" version="4.1.0" />
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>

      <group targetFramework="netstandard2.0">
        <dependency id="Hangfire.Core" version="[%version%]" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="net451\Hangfire.SqlServer.dll" target="lib\net451" />
    <file src="net451\Hangfire.SqlServer.xml" target="lib\net451" />
    
    <file src="netstandard1.3\Hangfire.SqlServer.dll" target="lib\netstandard1.3" />
    <file src="netstandard1.3\Hangfire.SqlServer.xml" target="lib\netstandard1.3" />

    <file src="netstandard2.0\Hangfire.SqlServer.dll" target="lib\netstandard2.0" />
    <file src="netstandard2.0\Hangfire.SqlServer.xml" target="lib\netstandard2.0" />
    
    <file src="Tools\DefaultInstall.sql" target="tools\install.sql" />

    <file src="..\nuspecs\icon.png" />

    <file src="LICENSE.md" />
    <file src="COPYING" />
    <file src="COPYING.LESSER" />
    <file src="NOTICES" />
    <file src="LICENSE_STANDARD" />
    <file src="LICENSE_ROYALTYFREE" />
  </files>
</package>

================================================
FILE: nuspecs/Hangfire.nuspec
================================================
<?xml version="1.0"?>
<package>
  <metadata>
    <id>Hangfire</id>
    <version>%version%</version>
    <title>Hangfire</title>
    <authors>Sergey Odinokov</authors>
    <owners>HangfireIO, odinserj</owners>
    <projectUrl>https://www.hangfire.io/</projectUrl>
    <repository type="git" url="https://github.com/HangfireIO/Hangfire.git" commit="%commit%" />
    <license type="file">LICENSE.md</license>
    <icon>icon.png</icon>
    <readme>README.md</readme>
    <summary>An easy way to perform fire-and-forget, delayed and recurring tasks inside ASP.NET applications. No Windows Service required.</summary>
    <description>
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/
    </description>
    <copyright>Copyright © 2013-2026 Hangfire OÜ</copyright>
    <tags>Hangfire AspNet MVC AspNetCore NetCore SqlServer Long-Running Background Fire-And-Forget Delayed Recurring Tasks Jobs Scheduler Threading Queues</tags>
    <releaseNotes><![CDATA[
Release notes are available in our blog https://www.hangfire.io/blog/
Please see https://docs.hangfire.io/en/latest/upgrade-guides/upgrading-to-hangfire-1.8.html to learn how to upgrade.

1.8.23

Hangfire.Core

• Changed – Use stable sorting algorithm for background job filters again (by @jirikanda).
• Fixed – Add missing keys for Swedish translation (by @karl-sjogren).
• Fixed – Custom `AutomaticRetryAttribute` is ignored under certain conditions (by @jirikanda).
• Project – Use `TypeNameAssemblyFormatHandling` in tests with .NET 6 (by @viktor-vintertass).

Hangfire.AspNetCore

• Fixed – `InvalidOperationException`: The request reached the end of the pipeline without executing the endpoint.

1.8.22

Hangfire.Core

• Added – `IGlobalConfiguration.UseNoOpLogProvider` method to disable logging.
• Changed – Un-deprecate interval methods in the `Cron` class, add remarks in docs instead.
• Changed – Bump internalized version of Cronos to 0.11.1.
• Changed – Bump internalized version of Microsoft.Owin to 4.2.3.
• Fixed – Serialization of arrays of nested types `SimpleAssemblyTypeSerializer`.
• Fixed – Remove wrong escaping characters in Portuguese translations on the "Servers" page.
• Fixed – Properly remove registered `IBackgroundProcessingServer` instances on OWIN app shutdown.
• Fixed – `AspNetShutdownDetector` for early ASP.NET shutdown detection is not working (regression from 1.7.30).
• Project – Replace the `netcoreapp3.1` target with the `net8.0` one in tests.

Hangfire.SqlServer

• Fixed – `InvalidCastException` when creating a background job with Schema 5 (regression from 1.8.15).
• Project – Replace the `netcoreapp3.1` target with the `net8.0` one in tests.

Hangfire.AspNetCore

• Added – `MapHangfireDashboardWithNoAuthorizationFilters` method, which does not include local-only filters.
• Changed – Set 404 status code when `MapHangfireDashboard` is used and no dispatcher is found.
• Fixed – `InvalidOperationException` upon receiving a request for 'hangfire/bootstrap.min.css.map'.

1.8.21

Hangfire.Core

• Added – `FailedState.IncludeFileInfo` to optionally show/hide line numbers in exceptions in Failed state.
• Changed – Include line numbers for exceptions by default when available.
• Fixed – Portuguese (Brazil) translations in Strings.pt-BR.resx (by @pedro-cons).
• Fixed – Static `BackgroundJob` class always acquires the most current `JobStorage.Current` instance.
• Fixed – Static `RecurringJob` class always acquires the most current `JobStorage.Current` instance.

Hangfire.SqlServer

• Added – `SqlServerStorageOptions.DisableTransactionScope` option for .NET Framework targets.
• Project – Port Monitoring API tests from the Hangfire.InMemory storage for better coverage.
• Project – Run tests for different targets in parallel with different databases.

1.8.20

Hangfire.Core

• Fixed – Glyphicons from Bootstrap are not displaying after upgrading to version 1.8.19.

1.8.19

Hangfire.Core

• Changed – Update Bootstrap to the custom version of 3.4.2 to avoid false alerts on unused features.
• Fixed – Typos in Portuguese translation (by @VianaArthur).
• Fixed – Unnecessary recurring job update transaction when nothing is changed after an error.

Hangfire.SqlServer

• Fixed – Sliding invisibility timeout isn't prolonged in lightweight servers, causing jobs to be restarted.

1.8.18

Hangfire.Core

• Added – `DashboardOptions.ServerPossiblyAbortedThreshold` to configure a custom threshold for "possibly aborted" warnings.
• Fixed – Expired jobs are still shown on the "Retries" page in some cases.
• Fixed – Issues with `CultureInfo`-related differences after upgrading to 1.8.15–1.8.17.
• Fixed – Don't leak `AsyncLocal` values from synchronous background job methods.
• Fixed – Don't throw an exception when passing the `Job.Args` property to the `Job` class' constructor.
• Project – Make the lock file usable for both .NET 8.0 and .NET 9.0 builds.
• Project – Make code generation for `cshtml` files working on newer platforms.

Hangfire.AspNetCore

• Fixed – Swallow possible `ObjectDisposedException` in the `StopAsync` method.
• Fixed – Avoid `NullReferenceException` when `LocalIpAddress` or `RemoteIpAddress` is null.

1.8.17

Hangfire.SqlServer

• Fixed – `InvalidCastException` while fetching a job with older schemas regression from 1.8.16.

1.8.16

Hangfire.Core

• Changed – Include fewer stack frames in exceptions come from `IServerFilter` implementations.
• Changed – Don't include file information in the `ExceptionDetails` property of a FailedState instance.
• Changed – Switch back to `CancellationEvent` usage instead of `CancellationToken.WaitHandle`.
• Fixed – Don't commit external transaction in the `BackgroundJobStateChanger` implementation.
• Fixed – Use safe default serializer settings for Newtonsoft.Json 12.X and below.
• Project – Fix builds for the `net451` platform when using .NET 9.0.
• Project – Significantly reduce execution time of unit tests in the `RecurringJobSchedulerFacts` class.
• Project – Bump `Microsoft.CodeAnalysis.NetAnalyzers` package to version 9.0.0.

Hangfire.SqlServer

• Changed – Use vanilla ADO.NET when fetching a job in the `SqlServerJobQueue` implementation.
• Fixed – SqlException: Must declare the scalar variable "@key" in delayed and recurring job schedulers.
• Fixed – Decrease the `LockTimeout` time when calling the `sp_getapplock` procedure to 1 second for less blocking.
• Project – Disable parallel tests execution when building under .NET 9.0.
• Project – Run tests over the latest Microsoft.Data.SqlClient package and the `net6.0` platform.
• Project – Reduce execution time of integration tests.
• Project – Disable `PoolBlockingPeriod` setting on AppVeyor to handle transient test failures.

1.8.15

Hangfire.Core

• Added – New `AutomaticRetryAttribute.ExceptOn` property to skip retries for specific exceptions.
• Changed – Refactor filters pipeline to use less LINQ magic and fewer allocations.
• Changed – Use `GetCultureInfo` instead of creating an instance in the `CaptureCultureAttribute` filter.
• Changed – Cache some immutable data to avoid extra allocations.
• Fixed – Improve loopback address detection (by @meziantou).
• Fixed – Reformulate misleading error messages regarding retry timings (by @RGFuaWVs).
• Fixed – Problem with missing localizations in the previous version.
• Fixed – Don't hide exception details on Failed Jobs page when the exception message is empty.
• Fixed – Problems with the first restore when using the `build.bat` command.
• Fixed – Better display of canceled recurring jobs in dashboard.
• Fixed – Less overall allocations with using static delegates and struct-based iterators.
• Fixed – Improve precision of some diagnostic messages in the wait protection logic.
• Fixed – Make all private and internal classes sealed to improve code consistency.
• Fixed – Less overall pressure on garbage collector.

Hangfire.SqlServer

• Changed – Use query template caching based on schema name to avoid excessive `string` allocations.
• Changed – Use static callbacks almost anywhere to avoid unnecessary delegate allocations.
• Changed – Use `QuerySingle`* or `ReadSingle`* where possible to avoid allocating lists.
• Changed – Unify `DbCommand` and `DbParameter` creation logic to improve code consistency.

1.8.13 and 1.8.14

Hangfire.Core

• Changed – Partial cache for serialization and deserialization in `InvocationData` to produce less strings.
• Changed – Add caching for default type serializer and resolver.
• Changed – Don't let `JobFilter`-related logic to show up in profilers.
• Changed – Modify `IProfiler` to be less allocatey for diagnostic purposes that almost never run.
• Changed – Prefer using `CancellationToken.WaitHandle` again, since early .NET Core days are gone.
• Changed – Fewer allocations when working with `IStateHandler` collections in a state machine.
• Fixed – Redirect the "System.Private.Xml.Linq" assembly to the "System.Xml.Linq" one for better interoperability.
• Fixed – Don't throw `KeyNotFoundException` when recurring job is malformed.
• Fixed – Proper relative path calculation in `UrlHelper.To` for OWIN-based Dashboard UI (by @LordJZ).
• Fixed – Typo in the Turkish localization file (by @ismkdc).
• Project – Switch to a modern PowerShell 7+ to speed up SignPath installation on AppVeyor.

Hangfire.SqlServer

• Changed – Limit polling queries when queues are empty with a semaphore for all configurations.
• Changed – Use per-queue signaling for same-process workers, instead of having a global signal.
• Fixed – Don't silently truncate queue names, throw an exception instead.
• Project – Decrease delays in SQL Server-related tests to complete them faster.

1.8.12

Hangfire.Core

• Added – `MaxDegreeOfParallelismForSchedulers` experimental server option if supported by storage.
• Added – Experimental support for parallel execution of the delayed job scheduler.
• Added – Experimental support for parallel execution of the recurring job scheduler.
• Fixed – Recurring job is scheduled to the past after recovering from error with `AddOrUpdate`.
• Fixed – `AddOrUpdate` triggers execution of a recurring job, even if its next execution is in the future.
• Fixed – Two very minor errors in the Swedish localization file (by @Uglack).

Hangfire.SqlServer

• Fixed – Populate `InvocationData` and `LoadException` properties in `JobDetails` method results.

1.8.11

Hangfire.Core

• Changed – Add icons and fix metadata for NuGet packages.
• Changed – Bump ILRepack to version 2.0.27 to avoid problems with internalizing.
• Fixed – "Type exists in both Cronos and Hangfire.Core" exception.

1.8.10

Hangfire.Core

• Changed – Added Norwegian translations for new keys (by @khellang).
• Changed – Update Brazilian Portuguese translation (by @HugoAlames).
• Changed – Bump Cronos dependency to version 0.8.3.

Hangfire.AspNetCore

• Fixed – Don't check `HasStarted` in `Response.WriteAsync` to avoid breaking dispatchers.

Hangfire.SqlServer

• Changed – Bump Dapper for the `netstandard2.0` platform to version 2.1.28.
• Changed – Bump Dapper for `net451` and `netstandard1.3` platforms to version 1.60.6.

Hangfire.Core, Hangfire.NetCore, Hangfire.AspNetCore, Hangfire.SqlServer, Hangfire.SqlServer.Msmq

• Project – Enable NuGet package and DLL signing with a company certificate.
• Project – Require NuGet package signature validation on restore for dependencies.
• Project – Add `HangfireIO` as a package owner.

1.8.9

Hangfire.Core

• Changed – Use `Environment.MachineName` as a server name if other environment vars aren't available.
• Changed – Bump the Cronos package version from 0.7.1 to 0.8.1.
• Changed – Improve portuguese translations (by @filipe-silva).
• Fixed – Possible `NullReferenceException` on the Deleted Jobs page (regression from 1.8.7).
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the `net6.0` platform.
• Project – Modernise the build system and clean up the build scripts.

Hangfire.SqlServer

• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.
• Project – Run unit tests against the `net6.0` platform.

Hangfire.NetCore

• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.

Hangfire.AspNetCore

• Fixed – Don't attempt to write response headers when response has already started (by @maliming).
• Project – Enable full source link support with embedded symbols and repository-based sources.
• Project – Enable repeatable package restore using a lock file.

1.8.7

Hangfire.Core

• Added – Allow using macro expressions like `@hourly` for recurring jobs (by @MuhamedAbdalla).
• Added – Show storage time in page footer when supported by storage implementation.
• Added – Show duration and latency columns separately on the Succeeded Jobs page when supported.
• Added – Show the exception column on the Deleted Jobs page when available and supported by storage.
• Changed – Reduce package size by stripping unnecessary locales in Moment.js.
• Changed – Bump Microsoft.Owin package to version 4.2.2.
• Changed – Log a warning message when a server listens to unsupported queue names (by @MuhamedAbdalla).
• Changed – Use storage time, if available, to show delay warnings in the Dashboard UI.
• Fixed – Proper rendering of generic arguments on the Job Details page (by @olivermue).
• Fixed – Language inconsistency in the Dashboard UI related to date/time description.
• Fixed – Big stack traces take too long time to be formatted.
• Fixed – Don't throw `NullReferenceException` from the Scheduled Jobs page when there's a job with missing data.
• Fixed – Don't throw `NullReferenceException` from the Processing Jobs page when there's a job with missing data.
• Fixed – CSS for Enqueued and Deleted state cards in dark theme.
• Fixed – Log errors instead of throwing an exception when a particular table can't be cleaned.
• Fixed – Avoid logging fatal exceptions when stopping a faulting background process.
• Fixed – Don't display checkboxes in the Dashboard UI when job details can’t be fetched.
• Fixed – Scrollbars in WebKit-based browsers are now dark in dark mode.
• Project – Disable tests for `netcoreapp1.0` and `netcoreapp2.1` targets since they aren't supported in AppVeyor.
• Project – Add a `net6.0` target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.

Hangfire.SqlServer

• Changed – Avoid throwing an exception when a connection string has duplicate property names.
• Project – Disable tests for `netcoreapp1.0` and `netcoreapp2.1` targets since they aren't supported in AppVeyor.
• Project – Add a `net6.0` target for unit tests instead of the removed ones.
• Project – Modernise projects and build environments to use the newest features.

1.8.6

• Changed – Update jQuery library in Dashboard UI to version 3.7.1.
• Changed – Mark all types in Hangfire.Annotations with `EditorBrowsableAttribute(Never)`.
• Changed – Change state card colors for the Awaiting state to match the Scheduled state.
• Fixed – Exception when deserializing an instance of the `AutomaticRetryAttribute` class from JSON.
• Fixed – Add serialization-related constructors for all the exception classes.
• Fixed – Use invariant culture or ordinal comparisons for internal strings.
• Fixed – Use invariant culture when formatting key names for metrics.
• Fixed – Use `CurrentCulture` instead of `CurrentUICulture` when displaying time.
• Project – Enable running static analysis by Coverity Scan weekly.
• Project – Enable mandatory static analysis by the Microsoft.CodeAnalysis.NetAnalyzers package.
• Project – Change MSBuild path when building using newer .NET SDKs for Razor views.
        
Hangfire.SqlServer

• Fixed – Exception in Dashboard UI when schema version is not present in a database.
• Fixed – `DbCommand` resource leak when releasing a lock detected by static analysis.
• Fixed – Don't add SQL Server-related metrics multiple times in Dashboard UI.

Hangfire.NetCore

• Fixed – Include assembly information to the Hangfire.NetCore assembly.

1.8.5

Hangfire.Core

• Added – Possibility to inform a `FaviconPath` on `DashboardOptions` (by @cezar-pimentel).
• Fixed – Inability to restore a disabled recurring job, regression in version 1.8.3.
• Fixed – Make it possible to serialize the `AutomaticRetryAttribute` filter to JSON.

Hangfire.SqlServer

• Fixed – "Query processor could not produce a query plan" when removing expired counters in `Schema 5`.

1.8.4

Hangfire.Core

• Added – Pass server id from a worker to the `PerformContext.ServerId` property available in filters.
• Fixed – Send heartbeats until full background processing server shutdown.
      
Hangfire.NetCore

• Changed – Send the stop signal earlier in the shutdown pipeline when hosting in .NET Core 3.1 or higher.
• Changed – Set processing server to null in hosted service to avoid `ObjectDisposedException`.
• Fixed – Other `IHostedService` implementations can block Hangfire server from being stopped.

1.8.3

Hangfire.Core

• Changed – Allow to configure `MaxLinesInStackTrace` for a particular `FailedState` instance.
• Fixed – Remove job id from schedule when it's not in the Scheduled state for some reason.
• Fixed – Missing invocations of recurring jobs when the new "Ignorable" option is used.
• Fixed – Make `DisableConcurrentExecutionAttribute` and `LatencyTimeoutAttribute` serializable.

1.8.2

Hangfire.Core

• Changed – Disable transactional job creation feature appeared in 1.8.0.
• Fixed – "Can not start continuation XXX" error when storage supports transactional job creation.

Hangfire.SqlServer

• Fixed – `InvalidOperationException` with new dashboard metrics when a database has multiple data/log files.

1.8.1
      
Hangfire.Core

• Added – `MisfireHandlingMode.Ignorable` to avoid scheduling recurring jobs on missed schedules.
• Added – Support disabling dark mode via the `DashboardOptions.DarkModeEnabled` property.
• Changed – Remove the 1-hour limitation for the `WithJobExpirationTimeout` configuration method.
• Fixed – Add missing `UseDefaultCulture` configuration method overloads.
• Fixed – Add missing `UseDashboardStylesheet` and `UseJobDetailsRenderer` configuration methods.
• Fixed – Give even more space for identifiers on the Recurring Jobs page.
• Fixed – `state-card-state-active` color is not very dark (by @coolhome).
• Fixed – Slightly change chart proportions to fit 4K in Dashboard UI.

Hangfire.SqlServer

• Fixed – Blocked workers regression since 1.7.33 when using multiple servers inside a process.
• Fixed – Target schema version is less than the current schema version error.
• Fixed – Implement database metrics without the need for additional permissions.
• Fixed – Use the `forceseek` table hint whenever possible to avoid performance drops.
      
Hangfire.NetCore

• Fixed – Add `net461` target for Hangfire.NetCore package to avoid missing method exceptions.

1.8.0

Hangfire.Core

• Breaking – Dropped the `NET45` platform target in favor of the `NET451` target to support Visual Studio 2022.

• Added – Introduce the `Job.Queue` property, so jobs now can have their own queue specified.
• Added – Method overloads to create background jobs directly with a custom default queue.
• Added – Method overloads to create recurring jobs directly with a custom default queue.
• Added – `IBackgroundJobClient.Create` method overloads with the new `queue` parameter.
• Added – Allow to filter exception types in `AutomaticRetryAttribute` by using the new `OnlyOn` property.
• Added – `DeletedState` now has the persisted `Exception` property populated after a failure.
• Added – `JobContinuationOptions.OnlyOnDeletedState` to create continuations after a failure.
• Added – `Exception` job parameter is passed to continuation when `UseResultsInContinuations` method is used.
• Added – `FromExceptionAttribute` to deal with an antecedent exception in a background job continuation.
• Added – Make it possible to specify multiple `JobContinuationOptions` values for a continuation.
• Added – `BackgroundJobServerOptions.IsLightweightServer` option to run a server with no storage processes.
• Added – Ability to use custom formattable resource identifiers for the `DisableConcurrentExecution` filter.
• Added – Pass `ServerId` to `FailedState` instances to simplify the debugging on different servers.
• Added – Allow to pass job parameters when creating a job (by @brian-knoll-micronetonline).
• Added – `MisfireHandlingMode.Strict` to create a job for each missed recurring job occurrence.
• Added – Support for default culture and UI culture via the `UseDefaultCulture` configuration method.
• Added – Introduce the `captureDefault` parameter in the `CaptureCulture` filter.
• Added – `IGlobalConfiguration.UseFilterProvider` extension method to unify the configuration.
• Added – Built-in `Remove` method for `JobFilterCollection` to remove global filters based on their type.
• Added – `CompatibilityLevel.Version_180` flag to avoid storing culture parameters when they are the same as the default ones.
• Changed – Create job atomically when `Transaction.CreateJob` feature is supported by the storage.
• Changed – Query time from storage in recurring and delayed schedulers when supported by storage.
• Changed – Move job to the `DeletedState` instead of `SucceededState` when its invocation was canceled by a filter.
• Changed – Speedup delayed jobs when a custom default queue is specified by avoiding extra state transition.
• Changed – Use UI culture from `CurrentCulture` parameter when `CurrentUICulture` one is missing.
• Changed – Increase the default value for the `BackgroundJobServerOptions.StopTimeout` to 500 ms.
• Deprecated – `AddOrUpdate` overloads with optional params defined in the `RecurringJobManagerExtensions` class.
• Deprecated – `AddOrUpdate` overloads with optional parameters defined in the `RecurringJob` class.
• Deprecated – `AddOrUpdate` method overloads with no `recurringJobId` parameter.
• Deprecated – `RecurringJobOptions.QueueName` property, new methods should be used instead.
• Breaking – Dropped `NET45` platform target in favor of `NET451` target to support Visual Studio 2022.

Dashboard UI
• Added – Dark mode support for Dashboard UI depending on the system settings (by @danillewin).
• Added – Dashboard UI now has a full-width layout to display more data (by @danillewin).
• Added – Allow to add custom JavaScript and CSS files to the Dashboard UI via the `DashboardRoutes` class.
• Added – `DefaultRecordsPerPage` property on the `DashboardOptions` class (by @PaulARoy).
• Added – `IGlobalConfiguration.UseJobDetailsRenderer` method for custom renderers for the Job Details page.
• Added – Display deleted jobs in the Realtime and History graphs when supported by storage.
• Added – `IGlobalConfiguration.UseDashboardMetrics` extension method to pass multiple metrics at once.
• Added – State renderer for the `DeletedState` to display its new exception property.
• Added – Support for new `MonitoringApi` methods for the Awaiting Jobs page.
• Changed – Make it possible to display methods of non-loaded jobs in the Dashboard UI when supported by storage.
• Changed – Improved display of realtime chart with more accents on failed and deleted jobs.
• Changed – Don't display the queue name in the state transition list when it's the `default` one.
• Changed – Display scheduled job count when the enqueued count is zero on the main metric.

Extensibility
• Added – `Factory`, `StateMachine`, and `Performer` properties to context classes to avoid injecting services.
• Added – Allow to pass custom data to `ApplyStateContext` and `ElectStateContext` instances.
• Added – Preserve custom data dictionary between the entire filter chain.
• Added – Allow to pass a transaction to background job state changer when new methods are implemented.
• Changed – Ignore some members when serializing a `JobFilterAttribute` instance to decrease the payload size.

Storage
• Added – Virtual `JobStorage.GetReadOnlyConnection` method intended to return `JobStorageConnection` for replicas.
• Added – Virtual `JobStorage.HasFeature` method for querying optional features.
• Added – The `JobStorageFeatures` class to avoid using magic strings in storage features.
• Added – Optional `GetSetCount`, `GetSetContains`, and `GetUtcDateTime` methods for the `JobStorageConnection` class.
• Added – Optional `AcquireDistributedLock` and `RemoveFromQueue` methods for the `JobStorageTransaction` class.
• Added – Optional `CreateJob` and `SetJobParameter` methods for the `JobStorageTransaction` class.
• Added – Optional `ParametersSnapshot` property for `BackgroundJob` and `JobData` classes to minimize roundtrips in the future.
• Added – Support for transactional acknowledgment using a new storage method for better handling some data loss scenarios.
• Added – Fetch `Retries` and `Awaiting` metrics in `StatisticsDto` properties when supported by storage.
• Added – The `JobStorageMonitor` class with more available methods for the new features.
• Changed – Allow to query job parameters without additional roundtrip when supported by storage.
• Changed – Expose state data dictionaries in list DTOs when supported by storage.
• Changed – Rely on storage indexing with the `Monitoring.AwaitingJobs` feature.

Internals
• Added – `IBackgroundProcess.UseBackgroundPool` now allows to pass thread configuration logic.
• Added – `BackgroundJobServerOptions.WorkerThreadConfigurationAction` option for custom thread configuration.
• Changed – Allow changing queues on the fly with custom worker configuration.
• Changed – Avoid storage roundtrip to query job data in worker, take data from previous state change.
• Changed – `FromParameterAttribute`-based logic now always overwrites arguments, even with non-null values.
• Changed – Turn the `JobContinuationOptions` enum into flags while still possible.
• Changed – Re-implement `TaskExtensions.WaitOneAsync` only with the `RegisterWaitForSingleObject` method.
• Changed – `ServerHeartbeatProcess` now uses `ThreadPriority.AboveNormal` to prioritize heartbeats.

Hangfire.NetCore

• Added – `IApplicationBuilder.UseHangfireServer` that accepts custom factory for `IBackgroundProcessingServer`.
• Added – `net451` and `netstandard1.3` targets for the package.
• Changed – Use `netstandard2.1` target instead of `netcoreapp3.0` for the package.
• Changed – Send the "stop" signal earlier when the host supports .NET Standard 2.1.
• Changed – Don't throw `ObjectDisposedException` when hosted service is disposed twice.

Hangfire.AspNetCore

• Breaking – Make the package to be dependent on Hangfire.NetCore and use the same types.
• Added – `IApplicationBuilder.UseHangfireServer` that accepts custom factory for `IBackgroundProcessingServer`.
 
Hangfire.SqlServer

• Breaking – Prioritise Microsoft.Data.SqlClient package over System.Data.SqlClient one.
• Breaking – Dropped the `NET45` platform target in favor of the `NET451` target to support Visual Studio 2022.

• Added – `Schema 8` migration with fixed `JobQueue.Id` column to use the `bigint` type.
• Added – `Schema 9` migration that creates an index for the `State.CreatedAt` column.
• Added – Automatic client package detection based on available types, preferring `System.Data.SqlClient` (by @0xced).
• Added – `SqlServerStorageOptions.DbProviderFactory` option to use a custom provider factory.
• Added – Clean up of old state entries of a non-finished job when `InactiveStateExpirationTimeout` is set.
• Added – `TryAutoDetectSchemaDependentOptions` option to automatically enable options based on the schema.
• Added – Optional experimental transactional acknowledge for SQL Server (`UseTransactionalAcknowledge` option).
• Added – Implement the `Connection.GetUtcDateTime` feature to make work the new changes in schedulers.
• Added – `SqlServerStorage.SchemaVersion` metric for Dashboard UI.
• Added – `DefaultQueueProvider` option to specify a custom default queue provider.
• Changed – Remove dependency on System.Data.SqlClient for Hangfire.SqlServer (by @0xced).
• Changed – Set default value for the `QueuePollInterval` option to `TimeSpan.Zero`.
• Changed – Polling delay when `QueuePollInterval` is set to zero now defaults to 200 ms.
• Changed – Sliding invisibility timeout-based fetching method is now used by default with a 5-minute timeout.
• Changed – Use command batching by default with a 5-minute maximum timeout.
• Changed – Enable the `UseRecommendedIsolationLevel` option by default.
• Changed – `GetJobData` now populates the `JobData.ParametersSnapshot` property to avoid additional roundtrips.
• Changed – Display scheduled and processing jobs in ascending order in Dashboard UI.
• Changed – Implement the `Transaction.AcquireDistributedLock` feature.
• Changed – Implement the `GetSetCount.Limited feature`.
• Changed – Implement the `GetSetContains feature`.
• Changed – Bump the internal version of Dapper to 2.0.123.
• Changed – Enable common metrics for SQL Server storage to be shown by default.
• Changed – Enable the `Monitoring.AwaitingJobs` feature for SQL storage.
• Deprecated – `UsePageLocksOnDequeue` option is now obsolete and doesn't affect anything.

Hangfire.SqlServer.Msmq

• Breaking – Dropped the `NET45` platform target in favor of the `NET451` target to support Visual Studio 2022.
]]>
    </releaseNotes>
    <dependencies>
      <group targetFramework="net451">
        <dependency id="Hangfire.Core" version="[%version%]" />
        <dependency id="Hangfire.SqlServer" version="[%version%]" />
        <dependency id="Microsoft.Owin.Host.SystemWeb" version="3.0.0" />
      </group>
      <group targetFramework="netstandard1.3">
        <dependency id="Hangfire.Core" version="[%version%]" />
        <dependency id="Hangfire.SqlServer" version="[%version%]" />
        <dependency id="Hangfire.AspNetCore" version="[%version%]" />
      </group>
      <group targetFramework="netstandard2.0">
        <dependency id="Hangfire.Core" version="[%version%]" />
        <dependency id="Hangfire.SqlServer" version="[%version%]" />
        <dependency id="Hangfire.AspNetCore" version="[%version%]" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="..\nuspecs\icon.png" />

    <file src="README.md" />
    <file src="LICENSE.md" />
    <file src="COPYING" />
    <file src="COPYING.LESSER" />
    <file src="NOTICES" />
    <file src="LICENSE_STANDARD" />
    <file src="LICENSE_ROYALTYFREE" />
  </files>
</package>


================================================
FILE: psake-project.ps1
================================================
Include "packages\Hangfire.Build.0.5.0\tools\psake-common.ps1"

Task Default -Depends Pack

Task Merge -Depends Compile -Description "Run ILRepack /internalize to merge required assemblies." {
    Repack-Assembly @("Hangfire.Core", "net451") @("Cronos", "CronExpressionDescriptor", "Microsoft.Owin")
    Repack-Assembly @("Hangfire.Core", "net46") @("Cronos", "CronExpressionDescriptor", "Microsoft.Owin")
    Repack-Assembly @("Hangfire.SqlServer", "net451") @("Dapper")

    Repack-Assembly @("Hangfire.Core", "netstandard1.3") @("Cronos")
    Repack-Assembly @("Hangfire.Core", "netstandard2.0") @("Cronos")
    Repack-Assembly @("Hangfire.SqlServer", "netstandard1.3") @("Dapper")
    Repack-Assembly @("Hangfire.SqlServer", "netstandard2.0") @("Dapper")
}

Task Test -Depends Merge -Description "Run unit and integration tests against merged assemblies." {
    # Dependencies shouldn't be re-built, because we need to run tests against merged assemblies to test
    # the same assemblies that are distributed to users. Since the `dotnet test` command doesn't support
    # the `--no-dependencies` command directly, we need to re-build tests themselves first.
    Exec { ls "tests\**\*.csproj" | % { dotnet build -c Release --no-restore --no-dependencies $_.FullName } }

    # We are running unit test project one by one, because pipelined version like the line above does not
    # support halting the whole execution pipeline when "dotnet test" command fails due to a failed test,
    # silently allowing build process to continue its execution even with failed tests.
    Exec { dotnet test -c Release --no-build "tests\Hangfire.Core.Tests" }
    Exec { dotnet test -c Release --no-build "tests\Hangfire.SqlServer.Tests" }
    Exec { dotnet test -c Release --no-build -p:TestTfmsInParallel=false "tests\Hangfire.SqlServer.Msmq.Tests" }
}

Task Collect -Depends Test -Description "Copy all artifacts to the build folder." {
    Collect-Assembly "Hangfire.Core" "net451"
    Collect-Assembly "Hangfire.SqlServer" "net451"
    Collect-Assembly "Hangfire.SqlServer.Msmq" "net451"
    Collect-Assembly "Hangfire.NetCore" "net451"
    Collect-Assembly "Hangfire.AspNetCore" "net451"

    Collect-Assembly "Hangfire.Core" "net46"

    Collect-Assembly "Hangfire.Core" "netstandard1.3"
    Collect-Assembly "Hangfire.SqlServer" "netstandard1.3"
    Collect-Assembly "Hangfire.NetCore" "netstandard1.3"
    Collect-Assembly "Hangfire.AspNetCore" "netstandard1.3"
    
    Collect-Assembly "Hangfire.Core" "netstandard2.0"
    Collect-Assembly "Hang
Download .txt
gitextract_a8bklu6g/

├── .editorconfig
├── .gitattributes
├── .gitignore
├── .nuget/
│   ├── packages.config
│   └── packages.lock.json
├── CONTRIBUTING.md
├── COPYING
├── COPYING.LESSER
├── Directory.Build.props
├── Hangfire.sln
├── Hangfire.sln.DotSettings
├── LICENSE.md
├── LICENSE_ROYALTYFREE
├── LICENSE_STANDARD
├── NOTICES
├── NuGet.config
├── README.md
├── SECURITY.md
├── appveyor.yml
├── build.bat
├── build.sh
├── coverity-scan.ps1
├── nuspecs/
│   ├── Hangfire.AspNetCore.nuspec
│   ├── Hangfire.Core.nuspec
│   ├── Hangfire.NetCore.nuspec
│   ├── Hangfire.SqlServer.MSMQ.nuspec
│   ├── Hangfire.SqlServer.nuspec
│   └── Hangfire.nuspec
├── psake-project.ps1
├── samples/
│   ├── ConsoleSample/
│   │   ├── ConsoleSample.csproj
│   │   ├── GenericServices.cs
│   │   ├── NewFeatures.cs
│   │   ├── Program.cs
│   │   ├── Services.cs
│   │   ├── Startup.cs
│   │   ├── app.config
│   │   └── packages.lock.json
│   └── NetCoreSample/
│       ├── NetCoreSample.csproj
│       ├── Program.cs
│       └── packages.lock.json
├── src/
│   ├── Directory.Build.props
│   ├── Hangfire.AspNetCore/
│   │   ├── Dashboard/
│   │   │   ├── AspNetCoreDashboardContext.cs
│   │   │   ├── AspNetCoreDashboardContextExtensions.cs
│   │   │   ├── AspNetCoreDashboardMiddleware.cs
│   │   │   ├── AspNetCoreDashboardRequest.cs
│   │   │   └── AspNetCoreDashboardResponse.cs
│   │   ├── Hangfire.AspNetCore.csproj
│   │   ├── HangfireApplicationBuilderExtensions.cs
│   │   ├── HangfireEndpointRouteBuilderExtensions.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   └── packages.lock.json
│   ├── Hangfire.Core/
│   │   ├── AppBuilderExtensions.cs
│   │   ├── App_Packages/
│   │   │   ├── LibLog.1.4/
│   │   │   │   └── LibLog.cs
│   │   │   ├── StackTraceFormatter/
│   │   │   │   └── StackTraceFormatter.cs
│   │   │   └── StackTraceParser/
│   │   │       └── StackTraceParser.cs
│   │   ├── AttemptsExceededAction.cs
│   │   ├── AutomaticRetryAttribute.cs
│   │   ├── BackgroundJob.Instance.cs
│   │   ├── BackgroundJob.cs
│   │   ├── BackgroundJobClient.cs
│   │   ├── BackgroundJobClientException.cs
│   │   ├── BackgroundJobClientExtensions.cs
│   │   ├── BackgroundJobServer.cs
│   │   ├── BackgroundJobServerOptions.cs
│   │   ├── CaptureCultureAttribute.cs
│   │   ├── Client/
│   │   │   ├── BackgroundJobFactory.cs
│   │   │   ├── ClientExceptionContext.cs
│   │   │   ├── CoreBackgroundJobFactory.cs
│   │   │   ├── CreateContext.cs
│   │   │   ├── CreatedContext.cs
│   │   │   ├── CreatingContext.cs
│   │   │   ├── IBackgroundJobFactory.cs
│   │   │   ├── IClientExceptionFilter.cs
│   │   │   └── IClientFilter.cs
│   │   ├── Common/
│   │   │   ├── CachedExpressionCompiler.cs
│   │   │   ├── CancellationTokenExtentions.cs
│   │   │   ├── ExpressionUtil/
│   │   │   │   ├── BinaryExpressionFingerprint.cs
│   │   │   │   ├── CachedExpressionCompiler.cs
│   │   │   │   ├── ConditionalExpressionFingerprint.cs
│   │   │   │   ├── ConstantExpressionFingerprint.cs
│   │   │   │   ├── DefaultExpressionFingerprint.cs
│   │   │   │   ├── ExpressionFingerprint.cs
│   │   │   │   ├── ExpressionFingerprintChain.cs
│   │   │   │   ├── FingerprintingExpressionVisitor.cs
│   │   │   │   ├── HashCodeCombiner.cs
│   │   │   │   ├── Hoisted.cs
│   │   │   │   ├── HoistingExpressionVisitor.cs
│   │   │   │   ├── IndexExpressionFingerprint.cs
│   │   │   │   ├── LambdaExpressionFingerprint.cs
│   │   │   │   ├── MemberExpressionFingerprint.cs
│   │   │   │   ├── MethodCallExpressionFingerprint.cs
│   │   │   │   ├── ParameterExpressionFingerprint.cs
│   │   │   │   ├── TypeBinaryExpressionFingerprint.cs
│   │   │   │   └── UnaryExpressionFingerprint.cs
│   │   │   ├── IJobFilter.cs
│   │   │   ├── IJobFilterProvider.cs
│   │   │   ├── Job.cs
│   │   │   ├── JobFilter.cs
│   │   │   ├── JobFilterAttribute.cs
│   │   │   ├── JobFilterAttributeFilterProvider.cs
│   │   │   ├── JobFilterCollection.cs
│   │   │   ├── JobFilterInfo.cs
│   │   │   ├── JobFilterProviderCollection.cs
│   │   │   ├── JobFilterProviders.cs
│   │   │   ├── JobFilterScope.cs
│   │   │   ├── JobHelper.cs
│   │   │   ├── JobLoadException.cs
│   │   │   ├── LanguagePolyfills.cs
│   │   │   ├── MethodInfoExtensions.cs
│   │   │   ├── ReflectedAttributeCache.cs
│   │   │   ├── SerializationHelper.cs
│   │   │   ├── ShallowExceptionHelper.cs
│   │   │   ├── TypeExtensions.cs
│   │   │   ├── TypeHelper.cs
│   │   │   └── TypeHelperSerializationBinder.cs
│   │   ├── ContinuationsSupportAttribute.cs
│   │   ├── Cron.cs
│   │   ├── Dashboard/
│   │   │   ├── BatchCommandDispatcher.cs
│   │   │   ├── CombinedResourceDispatcher.cs
│   │   │   ├── CommandDispatcher.cs
│   │   │   ├── Content/
│   │   │   │   ├── css/
│   │   │   │   │   ├── hangfire-dark.css
│   │   │   │   │   └── hangfire.css
│   │   │   │   ├── js/
│   │   │   │   │   └── hangfire.js
│   │   │   │   └── resx/
│   │   │   │       ├── Strings.Designer.cs
│   │   │   │       ├── Strings.ca.resx
│   │   │   │       ├── Strings.de.resx
│   │   │   │       ├── Strings.es.resx
│   │   │   │       ├── Strings.fa.resx
│   │   │   │       ├── Strings.fr.resx
│   │   │   │       ├── Strings.nb.resx
│   │   │   │       ├── Strings.nl.resx
│   │   │   │       ├── Strings.pt-BR.resx
│   │   │   │       ├── Strings.pt-PT.resx
│   │   │   │       ├── Strings.pt.resx
│   │   │   │       ├── Strings.resx
│   │   │   │       ├── Strings.sv.resx
│   │   │   │       ├── Strings.tr-TR.resx
│   │   │   │       ├── Strings.zh-TW.resx
│   │   │   │       └── Strings.zh.resx
│   │   │   ├── DashboardContext.cs
│   │   │   ├── DashboardMetric.cs
│   │   │   ├── DashboardMetrics.cs
│   │   │   ├── DashboardRequest.cs
│   │   │   ├── DashboardResponse.cs
│   │   │   ├── DashboardRoutes.cs
│   │   │   ├── EmbeddedResourceDispatcher.cs
│   │   │   ├── HtmlHelper.cs
│   │   │   ├── IDashboardAsyncAuthorizationFilter.cs
│   │   │   ├── IDashboardAuthorizationFilter.cs
│   │   │   ├── IDashboardDispatcher.cs
│   │   │   ├── JobDetailsRenderer.cs
│   │   │   ├── JobHistoryRenderer.cs
│   │   │   ├── JobMethodCallRenderer.cs
│   │   │   ├── JobsSidebarMenu.cs
│   │   │   ├── JsonStats.cs
│   │   │   ├── LocalRequestsOnlyAuthorizationFilter.cs
│   │   │   ├── MenuItem.cs
│   │   │   ├── Metric.cs
│   │   │   ├── NavigationMenu.cs
│   │   │   ├── NonEscapedString.cs
│   │   │   ├── Owin/
│   │   │   │   ├── IOwinDashboardAntiforgery.cs
│   │   │   │   ├── MiddlewareExtensions.cs
│   │   │   │   ├── OwinDashboardContext.cs
│   │   │   │   ├── OwinDashboardContextExtensions.cs
│   │   │   │   ├── OwinDashboardRequest.cs
│   │   │   │   └── OwinDashboardResponse.cs
│   │   │   ├── Pager.cs
│   │   │   ├── Pages/
│   │   │   │   ├── AwaitingJobsPage.cshtml
│   │   │   │   ├── AwaitingJobsPage.cshtml.cs
│   │   │   │   ├── DeletedJobsPage.cshtml
│   │   │   │   ├── DeletedJobsPage.cshtml.cs
│   │   │   │   ├── EnqueuedJobsPage.cs
│   │   │   │   ├── EnqueuedJobsPage.cshtml
│   │   │   │   ├── EnqueuedJobsPage.cshtml.cs
│   │   │   │   ├── FailedJobsPage.cshtml
│   │   │   │   ├── FailedJobsPage.cshtml.cs
│   │   │   │   ├── FetchedJobsPage.cs
│   │   │   │   ├── FetchedJobsPage.cshtml
│   │   │   │   ├── FetchedJobsPage.cshtml.cs
│   │   │   │   ├── HomePage.cs
│   │   │   │   ├── HomePage.cshtml
│   │   │   │   ├── HomePage.cshtml.cs
│   │   │   │   ├── JobDetailsPage.cs
│   │   │   │   ├── JobDetailsPage.cshtml
│   │   │   │   ├── JobDetailsPage.cshtml.cs
│   │   │   │   ├── LayoutPage.cs
│   │   │   │   ├── LayoutPage.cshtml
│   │   │   │   ├── LayoutPage.cshtml.cs
│   │   │   │   ├── ProcessingJobsPage.cshtml
│   │   │   │   ├── ProcessingJobsPage.cshtml.cs
│   │   │   │   ├── QueuesPage.cshtml
│   │   │   │   ├── QueuesPage.cshtml.cs
│   │   │   │   ├── RecurringJobsPage.cshtml
│   │   │   │   ├── RecurringJobsPage.cshtml.cs
│   │   │   │   ├── RetriesPage.cshtml
│   │   │   │   ├── RetriesPage.cshtml.cs
│   │   │   │   ├── ScheduledJobsPage.cshtml
│   │   │   │   ├── ScheduledJobsPage.cshtml.cs
│   │   │   │   ├── ServersPage.cshtml
│   │   │   │   ├── ServersPage.cshtml.cs
│   │   │   │   ├── SucceededJobs.cshtml
│   │   │   │   ├── SucceededJobs.cshtml.cs
│   │   │   │   ├── _BlockMetric.cs
│   │   │   │   ├── _BlockMetric.cshtml
│   │   │   │   ├── _BlockMetric.cshtml.cs
│   │   │   │   ├── _Breadcrumbs.cs
│   │   │   │   ├── _Breadcrumbs.cshtml
│   │   │   │   ├── _Breadcrumbs.cshtml.cs
│   │   │   │   ├── _ErrorAlert.cshtml
│   │   │   │   ├── _ErrorAlert.cshtml.cs
│   │   │   │   ├── _InlineMetric.cs
│   │   │   │   ├── _InlineMetric.cshtml
│   │   │   │   ├── _InlineMetric.cshtml.cs
│   │   │   │   ├── _Navigation.cshtml
│   │   │   │   ├── _Navigation.cshtml.cs
│   │   │   │   ├── _Paginator.cs
│   │   │   │   ├── _Paginator.cshtml
│   │   │   │   ├── _Paginator.cshtml.cs
│   │   │   │   ├── _PerPageSelector.cs
│   │   │   │   ├── _PerPageSelector.cshtml
│   │   │   │   ├── _PerPageSelector.cshtml.cs
│   │   │   │   ├── _SidebarMenu.cs
│   │   │   │   ├── _SidebarMenu.cshtml
│   │   │   │   └── _SidebarMenu.cshtml.cs
│   │   │   ├── RazorPage.cs
│   │   │   ├── RazorPageDispatcher.cs
│   │   │   ├── RouteCollection.cs
│   │   │   ├── RouteCollectionExtensions.cs
│   │   │   └── UrlHelper.cs
│   │   ├── DashboardOptions.cs
│   │   ├── DisableConcurrentExecutionAttribute.cs
│   │   ├── ExceptionInfo.cs
│   │   ├── ExceptionTypeHelper.cs
│   │   ├── FromParameterAttribute.cs
│   │   ├── FromResultAttribute.cs
│   │   ├── GlobalConfiguration.cs
│   │   ├── GlobalConfigurationExtensions.cs
│   │   ├── GlobalJobFilters.cs
│   │   ├── GlobalStateHandlers.cs
│   │   ├── Hangfire.Core.csproj
│   │   ├── IBackgroundJobClient.cs
│   │   ├── IGlobalConfiguration.cs
│   │   ├── IJobCancellationToken.cs
│   │   ├── IRecurringJobManager.cs
│   │   ├── ITimeZoneResolver.cs
│   │   ├── IdempotentCompletionAttribute.cs
│   │   ├── JobActivator.cs
│   │   ├── JobActivatorContext.cs
│   │   ├── JobActivatorScope.cs
│   │   ├── JobCancellationToken.cs
│   │   ├── JobCancellationTokenExtensions.cs
│   │   ├── JobContinuationOptions.cs
│   │   ├── JobDisplayNameAttribute.cs
│   │   ├── JobParameterInjectionFilter.cs
│   │   ├── JobStorage.cs
│   │   ├── LatencyTimeoutAttribute.cs
│   │   ├── MisfireHandlingMode.cs
│   │   ├── MoreLinq/
│   │   │   └── MoreEnumerable.Pairwise.cs
│   │   ├── Obsolete/
│   │   │   ├── BootstrapperConfigurationExtensions.cs
│   │   │   ├── CreateJobFailedException.cs
│   │   │   ├── DashboardMiddleware.cs
│   │   │   ├── DashboardOwinExtensions.cs
│   │   │   ├── IAuthorizationFilter.cs
│   │   │   ├── IBootstrapperConfiguration.cs
│   │   │   ├── IRequestDispatcher.cs
│   │   │   ├── IServerComponent.cs
│   │   │   ├── IServerProcess.cs
│   │   │   ├── Job.Obsolete.cs
│   │   │   ├── OwinBootstrapper.cs
│   │   │   ├── RequestDispatcherContext.cs
│   │   │   ├── RequestDispatcherWrapper.cs
│   │   │   ├── ServerOwinExtensions.cs
│   │   │   ├── ServerWatchdogOptions.cs
│   │   │   ├── StartupConfiguration.cs
│   │   │   └── StateContext.cs
│   │   ├── Processing/
│   │   │   ├── AppDomainUnloadMonitor.cs
│   │   │   ├── BackgroundDispatcher.cs
│   │   │   ├── BackgroundDispatcherAsync.cs
│   │   │   ├── BackgroundExecution.cs
│   │   │   ├── BackgroundExecutionOptions.cs
│   │   │   ├── BackgroundTaskScheduler.cs
│   │   │   ├── IBackgroundDispatcher.cs
│   │   │   ├── IBackgroundExecution.cs
│   │   │   ├── InlineSynchronizationContext.cs
│   │   │   └── TaskExtensions.cs
│   │   ├── Profiling/
│   │   │   ├── EmptyProfiler.cs
│   │   │   ├── IProfiler.cs
│   │   │   ├── ProfilerExtensions.cs
│   │   │   └── SlowLogProfiler.cs
│   │   ├── Properties/
│   │   │   ├── Annotations.cs
│   │   │   ├── AssemblyInfo.cs
│   │   │   └── NamespaceDoc.cs
│   │   ├── QueueAttribute.cs
│   │   ├── Razor.build
│   │   ├── RecurringJob.cs
│   │   ├── RecurringJobEntity.cs
│   │   ├── RecurringJobExtensions.cs
│   │   ├── RecurringJobManager.cs
│   │   ├── RecurringJobManagerExtensions.cs
│   │   ├── RecurringJobOptions.cs
│   │   ├── Server/
│   │   │   ├── AspNetShutdownDetector.cs
│   │   │   ├── BackgroundJobPerformer.cs
│   │   │   ├── BackgroundProcessContext.cs
│   │   │   ├── BackgroundProcessDispatcherBuilder.cs
│   │   │   ├── BackgroundProcessDispatcherBuilderAsync.cs
│   │   │   ├── BackgroundProcessExtensions.cs
│   │   │   ├── BackgroundProcessingServer.cs
│   │   │   ├── BackgroundProcessingServerOptions.cs
│   │   │   ├── BackgroundServerContext.cs
│   │   │   ├── BackgroundServerProcess.cs
│   │   │   ├── CoreBackgroundJobPerformer.cs
│   │   │   ├── DelayedJobScheduler.cs
│   │   │   ├── IBackgroundJobPerformer.cs
│   │   │   ├── IBackgroundProcess.cs
│   │   │   ├── IBackgroundProcessAsync.cs
│   │   │   ├── IBackgroundProcessDispatcherBuilder.cs
│   │   │   ├── IBackgroundProcessingServer.cs
│   │   │   ├── IBackgroundServerProcess.cs
│   │   │   ├── IServerExceptionFilter.cs
│   │   │   ├── IServerFilter.cs
│   │   │   ├── JobAbortedException.cs
│   │   │   ├── JobPerformanceException.cs
│   │   │   ├── PerformContext.cs
│   │   │   ├── PerformedContext.cs
│   │   │   ├── PerformingContext.cs
│   │   │   ├── RecurringJobScheduler.cs
│   │   │   ├── ServerContext.cs
│   │   │   ├── ServerExceptionContext.cs
│   │   │   ├── ServerHeartbeatProcess.cs
│   │   │   ├── ServerJobCancellationToken.cs
│   │   │   ├── ServerJobCancellationWatcher.cs
│   │   │   ├── ServerProcessDispatcherBuilder.cs
│   │   │   ├── ServerWatchdog.cs
│   │   │   └── Worker.cs
│   │   ├── States/
│   │   │   ├── ApplyStateContext.cs
│   │   │   ├── AwaitingState.cs
│   │   │   ├── BackgroundJobStateChanger.cs
│   │   │   ├── CoreStateMachine.cs
│   │   │   ├── DeletedState.cs
│   │   │   ├── ElectStateContext.cs
│   │   │   ├── EnqueuedState.cs
│   │   │   ├── FailedState.cs
│   │   │   ├── IApplyStateFilter.cs
│   │   │   ├── IBackgroundJobStateChanger.cs
│   │   │   ├── IElectStateFilter.cs
│   │   │   ├── IState.cs
│   │   │   ├── IStateHandler.cs
│   │   │   ├── IStateMachine.cs
│   │   │   ├── ProcessingState.cs
│   │   │   ├── ScheduledState.cs
│   │   │   ├── StateChangeContext.cs
│   │   │   ├── StateHandlerCollection.cs
│   │   │   ├── StateMachine.cs
│   │   │   └── SucceededState.cs
│   │   ├── StatisticsHistoryAttribute.cs
│   │   ├── Storage/
│   │   │   ├── BackgroundServerGoneException.cs
│   │   │   ├── DistributedLockTimeoutException.cs
│   │   │   ├── IFetchedJob.cs
│   │   │   ├── IMonitoringApi.cs
│   │   │   ├── IStorageConnection.cs
│   │   │   ├── IWriteOnlyTransaction.cs
│   │   │   ├── InvocationData.cs
│   │   │   ├── JobData.cs
│   │   │   ├── JobStorageConnection.cs
│   │   │   ├── JobStorageFeatures.cs
│   │   │   ├── JobStorageMonitor.cs
│   │   │   ├── JobStorageTransaction.cs
│   │   │   ├── Monitoring/
│   │   │   │   ├── AwaitingJobDto.cs
│   │   │   │   ├── DeletedJobDto.cs
│   │   │   │   ├── EnqueuedJobDto.cs
│   │   │   │   ├── FailedJobDto.cs
│   │   │   │   ├── FetchedJobDto.cs
│   │   │   │   ├── JobDetailsDto.cs
│   │   │   │   ├── JobList.cs
│   │   │   │   ├── ProcessingJobDto.cs
│   │   │   │   ├── QueueWithTopEnqueuedJobsDto.cs
│   │   │   │   ├── ScheduledJobDto.cs
│   │   │   │   ├── ServerDto.cs
│   │   │   │   ├── StateHistoryDto.cs
│   │   │   │   ├── StatisticsDto.cs
│   │   │   │   └── SucceededJobDto.cs
│   │   │   ├── RecurringJobDto.cs
│   │   │   ├── StateData.cs
│   │   │   └── StorageConnectionExtensions.cs
│   │   └── packages.lock.json
│   ├── Hangfire.NetCore/
│   │   ├── AspNetCore/
│   │   │   ├── AspNetCoreJobActivator.cs
│   │   │   ├── AspNetCoreJobActivatorScope.cs
│   │   │   ├── AspNetCoreLog.cs
│   │   │   └── AspNetCoreLogProvider.cs
│   │   ├── BackgroundJobServerHostedService.cs
│   │   ├── BackgroundProcessingServerHostedService.cs
│   │   ├── DefaultClientManagerFactory.cs
│   │   ├── Hangfire.NetCore.csproj
│   │   ├── HangfireServiceCollectionExtensions.cs
│   │   ├── IBackgroundJobClientFactory.cs
│   │   ├── IRecurringJobManagerFactory.cs
│   │   └── packages.lock.json
│   ├── Hangfire.SqlServer/
│   │   ├── Constants.cs
│   │   ├── CountersAggregator.cs
│   │   ├── DbCommandExtensions.cs
│   │   ├── DefaultInstall.sql
│   │   ├── DefaultInstall.tt
│   │   ├── EnqueuedAndFetchedCountDto.cs
│   │   ├── Entities/
│   │   │   ├── JobParameter.cs
│   │   │   ├── Server.cs
│   │   │   ├── ServerData.cs
│   │   │   ├── SqlHash.cs
│   │   │   ├── SqlJob.cs
│   │   │   └── SqlState.cs
│   │   ├── ExceptionTypeHelper.cs
│   │   ├── ExpirationManager.cs
│   │   ├── Hangfire.SqlServer.csproj
│   │   ├── IPersistentJobQueue.cs
│   │   ├── IPersistentJobQueueMonitoringApi.cs
│   │   ├── IPersistentJobQueueProvider.cs
│   │   ├── Install.sql
│   │   ├── PersistentJobQueueProviderCollection.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   ├── SqlCommandBatch.cs
│   │   ├── SqlCommandSet.cs
│   │   ├── SqlServerBootstrapperConfigurationExtensions.cs
│   │   ├── SqlServerConnection.cs
│   │   ├── SqlServerDistributedLock.cs
│   │   ├── SqlServerDistributedLockException.cs
│   │   ├── SqlServerHeartbeatProcess.cs
│   │   ├── SqlServerJobQueue.cs
│   │   ├── SqlServerJobQueueMonitoringApi.cs
│   │   ├── SqlServerJobQueueProvider.cs
│   │   ├── SqlServerMonitoringApi.cs
│   │   ├── SqlServerObjectsInstaller.cs
│   │   ├── SqlServerStorage.cs
│   │   ├── SqlServerStorageExtensions.cs
│   │   ├── SqlServerStorageOptions.cs
│   │   ├── SqlServerTimeoutJob.cs
│   │   ├── SqlServerTransactionJob.cs
│   │   ├── SqlServerWriteOnlyTransaction.cs
│   │   ├── TimestampHelper.cs
│   │   └── packages.lock.json
│   ├── Hangfire.SqlServer.Msmq/
│   │   ├── Hangfire.SqlServer.Msmq.csproj
│   │   ├── IMsmqTransaction.cs
│   │   ├── MessageQueueExtensions.cs
│   │   ├── MsmqDtcTransaction.cs
│   │   ├── MsmqExtensions.cs
│   │   ├── MsmqFetchedJob.cs
│   │   ├── MsmqInternalTransaction.cs
│   │   ├── MsmqJobQueue.cs
│   │   ├── MsmqJobQueueMonitoringApi.cs
│   │   ├── MsmqJobQueueProvider.cs
│   │   ├── MsmqSqlServerStorageExtensions.cs
│   │   ├── MsmqTransactionType.cs
│   │   ├── Properties/
│   │   │   └── AssemblyInfo.cs
│   │   └── packages.lock.json
│   └── SharedAssemblyInfo.cs
└── tests/
    ├── Directory.Build.props
    ├── Hangfire.Core.Tests/
    │   ├── BackgroundJobClientExtensionsFacts.cs
    │   ├── BackgroundJobClientFacts.cs
    │   ├── BackgroundJobFacts.cs
    │   ├── BackgroundJobServerFacts.cs
    │   ├── CaptureCultureAttributeFacts.cs
    │   ├── Client/
    │   │   ├── BackgroundJobFactoryFacts.cs
    │   │   ├── ClientExceptionContextFacts.cs
    │   │   ├── CoreBackgroundJobFactoryFacts.cs
    │   │   ├── CreateContextFacts.cs
    │   │   ├── CreatedContextFacts.cs
    │   │   └── CreatingContextFacts.cs
    │   ├── Common/
    │   │   ├── CancellationTokenExtentionsFacts.cs
    │   │   ├── JobArgumentFacts.cs
    │   │   ├── JobFacts.cs
    │   │   ├── JobFilterAttributeFacts.cs
    │   │   ├── JobFilterAttributeFilterProviderFacts.cs
    │   │   ├── JobFilterCollectionFacts.cs
    │   │   ├── JobFilterFacts.cs
    │   │   ├── JobFilterProviderCollectionFacts.cs
    │   │   ├── JobHelperFacts.cs
    │   │   ├── JobLoadExceptionFacts.cs
    │   │   ├── MethodInfoExtensionsFacts.cs
    │   │   ├── SerializationHelperFacts.cs
    │   │   ├── ShallowExceptionHelperFacts.cs
    │   │   └── TypeExtensionsFacts.cs
    │   ├── ContinuationsSupportAttributeFacts.cs
    │   ├── CronFacts.cs
    │   ├── Dashboard/
    │   │   ├── BatchCommandDispatcherFacts.cs
    │   │   ├── CommandDispatcherFacts.cs
    │   │   ├── DashboardOptionsFacts.cs
    │   │   └── HtmlHelperFacts.cs
    │   ├── GlobalConfigurationExtensionsFacts.cs
    │   ├── GlobalStateHandlersFacts.cs
    │   ├── GlobalTestsConfiguration.cs
    │   ├── Hangfire.Core.Tests.csproj
    │   ├── Hangfire.Core.Tests.csproj.DotSettings
    │   ├── JobActivatorFacts.cs
    │   ├── JobCancellationTokenFacts.cs
    │   ├── JobParameterInjectionFilterFacts.cs
    │   ├── JobStorageFacts.cs
    │   ├── LatencyTimeoutAttributeFacts.cs
    │   ├── Mocks/
    │   │   ├── ApplyStateContextMock.cs
    │   │   ├── BackgroundJobMock.cs
    │   │   ├── BackgroundProcessContextMock.cs
    │   │   ├── CreateContextMock.cs
    │   │   ├── ElectStateContextMock.cs
    │   │   ├── PerformContextMock.cs
    │   │   └── StateChangeContextMock.cs
    │   ├── Obsolete/
    │   │   └── ServerWatchdogOptionsFacts.cs
    │   ├── PreserveCultureAttributeFacts.cs
    │   ├── Processing/
    │   │   └── TaskExtensionsFacts.cs
    │   ├── Profiling/
    │   │   └── ProfilerFacts.cs
    │   ├── QueueAttributeFacts.cs
    │   ├── RecurringJobEntityFacts.cs
    │   ├── RecurringJobManagerFacts.cs
    │   ├── RecurringJobOptionsFacts.cs
    │   ├── RetryAttributeFacts.cs
    │   ├── Server/
    │   │   ├── BackgroundJobPerformerFacts.cs
    │   │   ├── BackgroundJobServerOptionsFacts.cs
    │   │   ├── BackgroundProcessContextFacts.cs
    │   │   ├── BackgroundProcessingServerFacts.cs
    │   │   ├── CoreBackgroundJobPerformerFacts.cs
    │   │   ├── DelayedJobSchedulerFacts.cs
    │   │   ├── PerformContextFacts.cs
    │   │   ├── RecurringJobSchedulerFacts.cs
    │   │   ├── ServerJobCancellationTokenFacts.cs
    │   │   ├── ServerJobCancellationWatcherFacts.cs
    │   │   ├── ServerWatchdogFacts.cs
    │   │   └── WorkerFacts.cs
    │   ├── States/
    │   │   ├── ApplyStateContextFacts.cs
    │   │   ├── AwaitingStateFacts.cs
    │   │   ├── AwaitingStateHandlerFacts.cs
    │   │   ├── BackgroundJobStateChangerFacts.cs
    │   │   ├── CoreStateMachineFacts.cs
    │   │   ├── DeletedStateFacts.cs
    │   │   ├── DeletedStateHandlerFacts.cs
    │   │   ├── ElectStateContextFacts.cs
    │   │   ├── EnqueuedStateFacts.cs
    │   │   ├── EnqueuedStateHandlerFacts.cs
    │   │   ├── EnqueuedStateValidationFacts.cs
    │   │   ├── FailedStateFacts.cs
    │   │   ├── ProcessingStateFacts.cs
    │   │   ├── ScheduledStateFacts.cs
    │   │   ├── ScheduledStateHandlerFacts.cs
    │   │   ├── StateChangeContextFacts.cs
    │   │   ├── StateHandlerCollectionFacts.cs
    │   │   ├── StateMachineFacts.cs
    │   │   ├── SucceededStateFacts.cs
    │   │   └── SucceededStateHandlerFacts.cs
    │   ├── StatisticsHistoryAttributeFacts.cs
    │   ├── Storage/
    │   │   ├── InvocationDataFacts.cs
    │   │   ├── MonitoringTypeFacts.cs
    │   │   └── StorageConnectionExtensionsFacts.cs
    │   ├── Stubs/
    │   │   ├── DashboardContextStub.cs
    │   │   ├── DashboardResponseStub.cs
    │   │   └── JobStorageStub.cs
    │   ├── Utils/
    │   │   ├── CleanSerializerSettingsAttribute.cs
    │   │   ├── CultureHelper.cs
    │   │   ├── DataCompatibilityRangeFactAttribute.cs
    │   │   ├── DataCompatibilityRangeFactDiscoverer.cs
    │   │   ├── DataCompatibilityRangeTestCase.cs
    │   │   ├── DataCompatibilityRangeTestCaseRunner.cs
    │   │   ├── DataCompatibilityRangeTestRunner.cs
    │   │   ├── DataCompatibilityRangeTheoryAttribute.cs
    │   │   ├── DataCompatibilityRangeTheoryDiscoverer.cs
    │   │   ├── DataCompatibilityRangeTheoryTestCase.cs
    │   │   ├── DataCompatibilityRangeTheoryTestCaseRunner.cs
    │   │   ├── GlobalLockAttribute.cs
    │   │   ├── PlatformHelper.cs
    │   │   ├── SequenceAttribute.cs
    │   │   ├── SerializerSettingsHelper.cs
    │   │   └── StaticLockAttribute.cs
    │   └── packages.lock.json
    ├── Hangfire.SqlServer.Msmq.Tests/
    │   ├── Hangfire.SqlServer.Msmq.Tests.csproj
    │   ├── MessageQueueExtensionsFacts.cs
    │   ├── MsmqJobQueueFacts.cs
    │   ├── MsmqJobQueueMonitoringApiFacts.cs
    │   ├── MsmqJobQueueProviderFacts.cs
    │   ├── MsmqSqlServerStorageExtensionsFacts.cs
    │   ├── Utils/
    │   │   ├── CleanMsmqQueueAttribute.cs
    │   │   └── MsmqUtils.cs
    │   └── packages.lock.json
    └── Hangfire.SqlServer.Tests/
        ├── CountersAggregatorFacts.cs
        ├── ExpirationManagerFacts.cs
        ├── GlobalTestsConfiguration.cs
        ├── Hangfire.SqlServer.Tests.csproj
        ├── PersistentJobQueueProviderCollectionFacts.cs
        ├── SqlServerConnectionFacts.cs
        ├── SqlServerDistributedLockFacts.cs
        ├── SqlServerJobQueueFacts.cs
        ├── SqlServerMonitoringApiFacts.cs
        ├── SqlServerStorageFacts.cs
        ├── SqlServerTimeoutJobFacts.cs
        ├── SqlServerTransactionJobFacts.cs
        ├── SqlServerWriteOnlyTransactionFacts.cs
        ├── StorageOptionsFacts.cs
        ├── Utils/
        │   ├── CleanDatabaseAttribute.cs
        │   ├── CleanSerializerSettingsAttribute.cs
        │   ├── ConnectionUtils.cs
        │   └── SerializerSettingsHelper.cs
        └── packages.lock.json
Download .txt
Showing preview only (458K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4610 symbols across 491 files)

FILE: samples/ConsoleSample/GenericServices.cs
  class GenericServices (line 5) | public class GenericServices<TType>
    method Method (line 7) | public void Method<TMethod>(TType arg1, TMethod arg2)

FILE: samples/ConsoleSample/NewFeatures.cs
  class NewFeatures (line 6) | public static class NewFeatures
    method TryExceptional (line 8) | [AutomaticRetry(Attempts = 0, OnAttemptsExceeded = AttemptsExceededAct...
    method Continuation (line 15) | public static void Continuation([FromResult] bool result)
    method CatchExceptional (line 20) | public static void CatchExceptional([FromException] ExceptionInfo exce...
    method FinallyExceptional (line 32) | public static void FinallyExceptional([FromException] ExceptionInfo ex...
    method FinallyExceptional2 (line 44) | public static void FinallyExceptional2([FromResult] bool result, [From...
    method Test (line 56) | public static void Test(bool throwException)

FILE: samples/ConsoleSample/Program.cs
  class Program (line 15) | public static class Program
    method Main (line 17) | public static void Main()
    method WriteString (line 243) | public static void WriteString(string value)

FILE: samples/ConsoleSample/Services.cs
  class Services (line 12) | public class Services
    method WriteIndex (line 16) | public async Task<int> WriteIndex([FromResult] int? index)
    method EmptyDefault (line 25) | public async Task EmptyDefault()
    method Async (line 30) | public async Task Async(CancellationToken cancellationToken)
    method EmptyCritical (line 36) | [Obsolete("Please use EmptyDefault method instead with `critical` queu...
    method Error (line 43) | [AutomaticRetry(Attempts = 0), LatencyTimeout(30)]
    method Random (line 51) | [Queue("critical")]
    method Cancelable (line 70) | public async Task Cancelable(int iterationCount, IJobCancellationToken...
    method Args (line 89) | [DisplayName("Name: {0}")]
    method Custom (line 96) | public async Task Custom(int id, string[] values, CustomObject objects...
    method FullArgs (line 101) | public async Task FullArgs(
    method LongRunning (line 119) | public async Task LongRunning(IJobCancellationToken token)
    class CustomObject (line 124) | public class CustomObject
    method Write (line 130) | public async Task Write(char character)
    method WriteBlankLine (line 136) | public async Task WriteBlankLine()
    method WriteLine (line 142) | [IdempotentCompletion]

FILE: samples/ConsoleSample/Startup.cs
  class Startup (line 7) | public class Startup
    method Configuration (line 9) | public void Configuration(IAppBuilder app)

FILE: samples/NetCoreSample/Program.cs
  class Program (line 19) | class Program
    method Main (line 21) | static async Task Main(string[] args)
  class CustomBackgroundJobFactory (line 72) | internal class CustomBackgroundJobFactory : IBackgroundJobFactory
    method CustomBackgroundJobFactory (line 76) | public CustomBackgroundJobFactory([NotNull] IBackgroundJobFactory inner)
    method Create (line 83) | public BackgroundJob Create(CreateContext context)
  class CustomBackgroundJobPerformer (line 90) | internal class CustomBackgroundJobPerformer : IBackgroundJobPerformer
    method CustomBackgroundJobPerformer (line 94) | public CustomBackgroundJobPerformer([NotNull] IBackgroundJobPerformer ...
    method Perform (line 99) | public object Perform(PerformContext context)
  class CustomBackgroundJobStateChanger (line 106) | internal class CustomBackgroundJobStateChanger : IBackgroundJobStateChanger
    method CustomBackgroundJobStateChanger (line 110) | public CustomBackgroundJobStateChanger([NotNull] IBackgroundJobStateCh...
    method ChangeState (line 115) | public IState ChangeState(StateChangeContext context)
  class RecurringJobsService (line 122) | internal class RecurringJobsService : BackgroundService
    method RecurringJobsService (line 128) | public RecurringJobsService(
    method ExecuteAsync (line 138) | protected override Task ExecuteAsync(CancellationToken stoppingToken)

FILE: src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardContext.cs
  class AspNetCoreDashboardContext (line 24) | public sealed class AspNetCoreDashboardContext : DashboardContext
    method AspNetCoreDashboardContext (line 26) | public AspNetCoreDashboardContext(
    method GetBackgroundJobClient (line 51) | public override IBackgroundJobClient GetBackgroundJobClient()
    method GetRecurringJobManager (line 62) | public override IRecurringJobManager GetRecurringJobManager()

FILE: src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardContextExtensions.cs
  class AspNetCoreDashboardContextExtensions (line 22) | public static class AspNetCoreDashboardContextExtensions
    method GetHttpContext (line 24) | public static HttpContext GetHttpContext([NotNull] this DashboardConte...

FILE: src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardMiddleware.cs
  class AspNetCoreDashboardMiddleware (line 26) | public class AspNetCoreDashboardMiddleware
    method AspNetCoreDashboardMiddleware (line 34) | public AspNetCoreDashboardMiddleware(
    method AspNetCoreDashboardMiddleware (line 43) | public AspNetCoreDashboardMiddleware(
    method Invoke (line 62) | public async Task Invoke(HttpContext httpContext)
    method SetResponseStatusCode (line 125) | private static void SetResponseStatusCode(HttpContext httpContext, int...
    method GetUnauthorizedStatusCode (line 133) | private static int GetUnauthorizedStatusCode(HttpContext httpContext)

FILE: src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardRequest.cs
  class AspNetCoreDashboardRequest (line 24) | internal sealed class AspNetCoreDashboardRequest : DashboardRequest
    method AspNetCoreDashboardRequest (line 28) | public AspNetCoreDashboardRequest([NotNull] HttpContext context)
    method GetQuery (line 39) | public override string GetQuery(string key) => _context.Request.Query[...
    method GetFormValuesAsync (line 41) | public override async Task<IList<string>> GetFormValuesAsync(string key)

FILE: src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardResponse.cs
  class AspNetCoreDashboardResponse (line 25) | internal sealed class AspNetCoreDashboardResponse : DashboardResponse
    method AspNetCoreDashboardResponse (line 29) | public AspNetCoreDashboardResponse([NotNull] HttpContext context)
    method WriteAsync (line 61) | public override Task WriteAsync(string text)
    method SetExpire (line 66) | public override void SetExpire(DateTimeOffset? value)

FILE: src/Hangfire.AspNetCore/HangfireApplicationBuilderExtensions.cs
  class HangfireApplicationBuilderExtensions (line 33) | public static class HangfireApplicationBuilderExtensions
    method UseHangfireDashboard (line 35) | public static IApplicationBuilder UseHangfireDashboard(
    method UseHangfireServer (line 60) | [Obsolete("Please use IServiceCollection.AddHangfireServer extension m...
    method UseHangfireServer (line 91) | public static IApplicationBuilder UseHangfireServer(
    method RegisterHangfireServer (line 104) | public static IServiceProvider RegisterHangfireServer(

FILE: src/Hangfire.AspNetCore/HangfireEndpointRouteBuilderExtensions.cs
  class HangfireEndpointRouteBuilderExtensions (line 28) | public static class HangfireEndpointRouteBuilderExtensions
    method MapHangfireDashboard (line 30) | public static IEndpointConventionBuilder MapHangfireDashboard(
    method MapHangfireDashboard (line 38) | public static IEndpointConventionBuilder MapHangfireDashboard(
    method MapHangfireDashboardWithNoAuthorizationFilters (line 67) | public static IEndpointConventionBuilder MapHangfireDashboardWithNoAut...
    method MapHangfireDashboardWithAuthorizationPolicy (line 84) | public static IEndpointConventionBuilder MapHangfireDashboardWithAutho...

FILE: src/Hangfire.Core/AppBuilderExtensions.cs
  class AppBuilderExtensions (line 130) | [EditorBrowsable(EditorBrowsableState.Never)]
    method UseHangfireServer (line 153) | public static IAppBuilder UseHangfireServer([NotNull] this IAppBuilder...
    method UseHangfireServer (line 176) | public static IAppBuilder UseHangfireServer(
    method UseHangfireServer (line 200) | public static IAppBuilder UseHangfireServer(
    method UseHangfireServer (line 227) | public static IAppBuilder UseHangfireServer(
    method UseHangfireServer (line 254) | public static IAppBuilder UseHangfireServer(
    method UseHangfireServer (line 283) | public static IAppBuilder UseHangfireServer(
    method UseHangfireServer (line 314) | public static IAppBuilder UseHangfireServer(
    method OnAppDisposing (line 342) | private static void OnAppDisposing(object state)
    method UseHangfireDashboard (line 364) | public static IAppBuilder UseHangfireDashboard([NotNull] this IAppBuil...
    method UseHangfireDashboard (line 382) | public static IAppBuilder UseHangfireDashboard(
    method UseHangfireDashboard (line 405) | public static IAppBuilder UseHangfireDashboard(
    method UseHangfireDashboard (line 430) | public static IAppBuilder UseHangfireDashboard(
    method UseHangfireDashboard (line 457) | public static IAppBuilder UseHangfireDashboard(
    method UseOwin (line 478) | private static BuildFunc UseOwin(this IAppBuilder builder)

FILE: src/Hangfire.Core/App_Packages/LibLog.1.4/LibLog.cs
  type ILog (line 44) | public interface ILog
    method Log (line 59) | bool Log(LogLevel logLevel, Func<string> messageFunc, Exception except...
  type LogLevel (line 65) | public enum LogLevel
  class LogExtensions (line 75) | public static class LogExtensions
    method IsDebugEnabled (line 77) | public static bool IsDebugEnabled(this ILog logger)
    method IsErrorEnabled (line 83) | public static bool IsErrorEnabled(this ILog logger)
    method IsFatalEnabled (line 89) | public static bool IsFatalEnabled(this ILog logger)
    method IsInfoEnabled (line 95) | public static bool IsInfoEnabled(this ILog logger)
    method IsTraceEnabled (line 101) | public static bool IsTraceEnabled(this ILog logger)
    method IsWarnEnabled (line 107) | public static bool IsWarnEnabled(this ILog logger)
    method Debug (line 113) | public static void Debug(this ILog logger, Func<string> messageFunc)
    method Debug (line 119) | public static void Debug(this ILog logger, string message)
    method DebugFormat (line 127) | public static void DebugFormat(this ILog logger, string message, param...
    method DebugException (line 135) | public static void DebugException(this ILog logger, string message, Ex...
    method Error (line 143) | public static void Error(this ILog logger, Func<string> messageFunc)
    method Error (line 148) | public static void Error(this ILog logger, string message)
    method ErrorFormat (line 156) | public static void ErrorFormat(this ILog logger, string message, param...
    method ErrorException (line 164) | public static void ErrorException(this ILog logger, string message, Ex...
    method Fatal (line 172) | public static void Fatal(this ILog logger, Func<string> messageFunc)
    method Fatal (line 177) | public static void Fatal(this ILog logger, string message)
    method FatalFormat (line 185) | public static void FatalFormat(this ILog logger, string message, param...
    method FatalException (line 193) | public static void FatalException(this ILog logger, string message, Ex...
    method Info (line 201) | public static void Info(this ILog logger, Func<string> messageFunc)
    method Info (line 207) | public static void Info(this ILog logger, string message)
    method InfoFormat (line 215) | public static void InfoFormat(this ILog logger, string message, params...
    method InfoException (line 223) | public static void InfoException(this ILog logger, string message, Exc...
    method Trace (line 231) | public static void Trace(this ILog logger, Func<string> messageFunc)
    method Trace (line 237) | public static void Trace(this ILog logger, string message)
    method TraceFormat (line 245) | public static void TraceFormat(this ILog logger, string message, param...
    method TraceException (line 253) | public static void TraceException(this ILog logger, string message, Ex...
    method Warn (line 261) | public static void Warn(this ILog logger, Func<string> messageFunc)
    method Warn (line 267) | public static void Warn(this ILog logger, string message)
    method WarnFormat (line 275) | public static void WarnFormat(this ILog logger, string message, params...
    method WarnException (line 283) | public static void WarnException(this ILog logger, string message, Exc...
    method GuardAgainstNullLogger (line 291) | private static void GuardAgainstNullLogger(ILog logger)
    method LogFormat (line 299) | private static void LogFormat(this ILog logger, LogLevel logLevel, str...
    method AsFunc (line 306) | private static Func<T> AsFunc<T>(this T value) where T : class
    method Return (line 311) | private static T Return<T>(this T value)
  type ILogProvider (line 320) | public interface ILogProvider
    method GetLogger (line 322) | ILog GetLogger(string name);
  class LogProvider (line 329) | public static class LogProvider
    method For (line 338) | public static ILog For<T>()
    method GetCurrentClassLogger (line 348) | public static ILog GetCurrentClassLogger()
    method GetLogger (line 360) | public static ILog GetLogger(Type type)
    method GetLogger (line 370) | public static ILog GetLogger(string name)
    method SetCurrentLogProvider (line 380) | public static void SetCurrentLogProvider(ILogProvider logProvider)
    method ResolveLogProvider (line 402) | private static ILogProvider ResolveLogProvider()
    class NoOpLogProvider (line 424) | internal sealed class NoOpLogProvider : ILogProvider
      method GetLogger (line 428) | public ILog GetLogger(string name)
    class NoOpLogger (line 434) | internal sealed class NoOpLogger : ILog
      method Log (line 438) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...
  class LoggerExecutionWrapper (line 445) | internal sealed class LoggerExecutionWrapper : ILog
    method LoggerExecutionWrapper (line 455) | public LoggerExecutionWrapper(ILog logger)
    method Log (line 460) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Exception...
  class NLogLogProvider (line 494) | public class NLogLogProvider : ILogProvider
    method NLogLogProvider (line 499) | public NLogLogProvider()
    method GetLogger (line 514) | public ILog GetLogger(string name)
    method IsLoggerAvailable (line 519) | public static bool IsLoggerAvailable()
    method GetLogManagerType (line 524) | private static Type GetLogManagerType()
    method GetGetLoggerMethodCall (line 529) | private static Func<string, object> GetGetLoggerMethodCall()
    class NLogLogger (line 538) | internal sealed class NLogLogger : ILog
      method NLogLogger (line 542) | internal NLogLogger(dynamic logger)
      method Log (line 547) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...
      method LogException (line 605) | private bool LogException(LogLevel logLevel, Func<string> messageFun...
      method IsLogLevelEnable (line 655) | private bool IsLogLevelEnable(LogLevel logLevel)
  class Log4NetLogProvider (line 676) | public class Log4NetLogProvider : ILogProvider
    method Log4NetLogProvider (line 681) | public Log4NetLogProvider()
    method GetLogger (line 696) | public ILog GetLogger(string name)
    method IsLoggerAvailable (line 701) | public static bool IsLoggerAvailable()
    method GetLogManagerType (line 706) | private static Type GetLogManagerType()
    method GetGetLoggerMethodCall (line 711) | private static Func<string, object> GetGetLoggerMethodCall()
    class Log4NetLogger (line 720) | internal sealed class Log4NetLogger : ILog
      method Log4NetLogger (line 724) | internal Log4NetLogger(dynamic logger)
      method Log (line 729) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...
      method LogException (line 780) | private bool LogException(LogLevel logLevel, Func<string> messageFun...
      method IsLogLevelEnable (line 823) | private bool IsLogLevelEnable(LogLevel logLevel)
  class EntLibLogProvider (line 845) | public class EntLibLogProvider : ILogProvider
    method EntLibLogProvider (line 854) | static EntLibLogProvider()
    method EntLibLogProvider (line 860) | public EntLibLogProvider()
    method GetLogger (line 877) | public ILog GetLogger(string name)
    method IsLoggerAvailable (line 882) | public static bool IsLoggerAvailable()
    method GetWriteLogEntry (line 887) | private static Action<string, string, TraceEventType> GetWriteLogEntry()
    method GetShouldLogEntry (line 907) | private static Func<string, TraceEventType, bool> GetShouldLogEntry()
    method GetWriteLogExpression (line 925) | private static MemberInitExpression GetWriteLogExpression(Expression m...
    class EntLibLogger (line 944) | internal sealed class EntLibLogger : ILog
      method EntLibLogger (line 950) | internal EntLibLogger(string loggerName, Action<string, string, Trac...
      method Log (line 957) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...
      method LogException (line 972) | public bool LogException(LogLevel logLevel, Func<string> messageFunc...
      method MapSeverity (line 980) | private static TraceEventType MapSeverity(LogLevel logLevel)
  class SerilogLogProvider (line 1000) | public class SerilogLogProvider : ILogProvider
    method SerilogLogProvider (line 1006) | public SerilogLogProvider()
    method GetLogger (line 1022) | public ILog GetLogger(string name)
    method IsLoggerAvailable (line 1027) | public static bool IsLoggerAvailable()
    method GetLogManagerType (line 1032) | private static Type GetLogManagerType()
    method GetForContextMethodCall (line 1037) | private static Func<string, object> GetForContextMethodCall()
    class SerilogCallbacks (line 1059) | internal sealed class SerilogCallbacks
      method SerilogCallbacks (line 1072) | public SerilogCallbacks()
    class SerilogLogger (line 1136) | internal sealed class SerilogLogger : ILog
      method SerilogLogger (line 1141) | internal SerilogLogger(SerilogCallbacks callbacks, object logger)
      method Log (line 1147) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...
      method LogException (line 1206) | private bool LogException(LogLevel logLevel, Func<string> messageFun...
  class LoupeLogProvider (line 1259) | public class LoupeLogProvider : ILogProvider
    method LoupeLogProvider (line 1264) | public LoupeLogProvider()
    method GetLogger (line 1286) | public ILog GetLogger(string name)
    method IsLoggerAvailable (line 1291) | public static bool IsLoggerAvailable()
    method GetLogManagerType (line 1296) | private static Type GetLogManagerType()
    method GetLogWriteDelegate (line 1301) | private static WriteDelegate GetLogWriteDelegate()
    class LoupeLogger (line 1316) | internal sealed class LoupeLogger : ILog
      method LoupeLogger (line 1324) | internal LoupeLogger(string category, WriteDelegate logWriteDelegate)
      method Log (line 1331) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...
      method ToLogMessageSeverity (line 1345) | private static TraceEventType ToLogMessageSeverity(LogLevel logLevel)
  class ColouredConsoleLogProvider (line 1386) | public class ColouredConsoleLogProvider : ILogProvider
    method ColouredConsoleLogProvider (line 1390) | static ColouredConsoleLogProvider()
    method ColouredConsoleLogProvider (line 1403) | public ColouredConsoleLogProvider()
    method ColouredConsoleLogProvider (line 1408) | public ColouredConsoleLogProvider(LogLevel minLevel)
    method GetLogger (line 1413) | public ILog GetLogger(string name)
    method DefaultMessageFormatter (line 1437) | protected static string DefaultMessageFormatter(string loggerName, Log...
    class ColouredConsoleLogger (line 1468) | internal sealed class ColouredConsoleLogger : ILog
      method ColouredConsoleLogger (line 1474) | public ColouredConsoleLogger(string name, LogLevel minLevel)
      method Log (line 1480) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...
      method Write (line 1496) | private void Write(LogLevel logLevel, string message, Exception e = ...
  class ElmahLogProvider (line 1526) | public class ElmahLogProvider : ILogProvider
    method ElmahLogProvider (line 1536) | public ElmahLogProvider()
    method ElmahLogProvider (line 1541) | public ElmahLogProvider(LogLevel minLevel)
    method GetLogger (line 1560) | public ILog GetLogger(string name)
    method IsLoggerAvailable (line 1565) | public static bool IsLoggerAvailable()
    method GetLogManagerType (line 1570) | private static Type GetLogManagerType()
    method GetHttpContextType (line 1575) | private static Type GetHttpContextType()
    method GetErrorType (line 1581) | private static Type GetErrorType()
    method GetGetErrorLogMethodCall (line 1586) | private static Func<object> GetGetErrorLogMethodCall()
    class ElmahLog (line 1596) | internal sealed class ElmahLog : ILog
      method ElmahLog (line 1602) | public ElmahLog(LogLevel minLevel, dynamic errorLog, Type errorType)
      method Log (line 1609) | public bool Log(LogLevel logLevel, Func<string> messageFunc, Excepti...

FILE: src/Hangfire.Core/App_Packages/StackTraceFormatter/StackTraceFormatter.cs
  class StackTraceHtmlFragments (line 27) | partial class StackTraceHtmlFragments : IStackTraceFormatter<string>
    method Text (line 46) | string IStackTraceFormatter<string>.Text(string text)            => st...
    method Type (line 47) | string IStackTraceFormatter<string>.Type(string markup)          => Be...
    method Method (line 48) | string IStackTraceFormatter<string>.Method(string markup)        => Be...
    method ParameterType (line 49) | string IStackTraceFormatter<string>.ParameterType(string markup) => Be...
    method ParameterName (line 50) | string IStackTraceFormatter<string>.ParameterName(string markup) => Be...
    method File (line 51) | string IStackTraceFormatter<string>.File(string markup)          => Be...
    method Line (line 52) | string IStackTraceFormatter<string>.Line(string markup)          => Be...
  type IStackTraceFormatter (line 59) | partial interface IStackTraceFormatter<T>
    method Text (line 61) | T Text             (string text);
    method Type (line 62) | T Type             (T markup);
    method Method (line 63) | T Method           (T markup);
    method ParameterType (line 64) | T ParameterType    (T markup);
    method ParameterName (line 65) | T ParameterName    (T markup);
    method File (line 66) | T File             (T markup);
    method Line (line 67) | T Line             (T markup);
  class StackTraceFormatter (line 74) | static partial class StackTraceFormatter
    method FormatHtml (line 78) | public static string FormatHtml(string text, IStackTraceFormatter<stri...
    method Format (line 83) | public static IEnumerable<T> Format<T>(string text, IStackTraceFormatt...

FILE: src/Hangfire.Core/App_Packages/StackTraceParser/StackTraceParser.cs
  class StackTraceParser (line 32) | partial class StackTraceParser
    method Parse (line 76) | public static IEnumerable<T> Parse<T>(
    method Parse (line 91) | public static IEnumerable<TFrame> Parse<TToken, TMethod, TParameters, ...
    method Token (line 124) | static T Token<T>(Capture capture, Func<int, int, string, T> tokenSele...

FILE: src/Hangfire.Core/AttemptsExceededAction.cs
  type AttemptsExceededAction (line 23) | public enum AttemptsExceededAction

FILE: src/Hangfire.Core/AutomaticRetryAttribute.cs
  class AutomaticRetryAttribute (line 78) | public sealed class AutomaticRetryAttribute : JobFilterAttribute, IElect...
    method AutomaticRetryAttribute (line 110) | public AutomaticRetryAttribute()
    method OnStateElection (line 232) | public void OnStateElection(ElectStateContext context)
    method OnStateApplied (line 297) | public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransa...
    method OnStateUnapplied (line 308) | public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTran...
    method ScheduleAgainLater (line 323) | private void ScheduleAgainLater(ElectStateContext context, int retryAt...
    method TransitionToDeleted (line 369) | private void TransitionToDeleted(ElectStateContext context, FailedStat...

FILE: src/Hangfire.Core/BackgroundJob.Instance.cs
  class BackgroundJob (line 23) | partial class BackgroundJob
    method BackgroundJob (line 26) | public BackgroundJob([NotNull] string id, [CanBeNull] Job job, DateTim...
    method BackgroundJob (line 32) | public BackgroundJob([NotNull] string id, [CanBeNull] Job job, DateTim...

FILE: src/Hangfire.Core/BackgroundJob.cs
  class BackgroundJob (line 45) | public partial class BackgroundJob
    method Enqueue (line 82) | public static string Enqueue([NotNull, InstantHandle] Expression<Actio...
    method Enqueue (line 101) | public static string Enqueue([NotNull] string queue, [NotNull, Instant...
    method Enqueue (line 118) | public static string Enqueue([NotNull, InstantHandle] Expression<Func<...
    method Enqueue (line 137) | public static string Enqueue([NotNull] string queue, [NotNull, Instant...
    method Enqueue (line 154) | public static string Enqueue<T>([NotNull, InstantHandle] Expression<Ac...
    method Enqueue (line 173) | public static string Enqueue<T>([NotNull] string queue, [NotNull, Inst...
    method Enqueue (line 190) | public static string Enqueue<T>([NotNull, InstantHandle] Expression<Fu...
    method Enqueue (line 209) | public static string Enqueue<T>([NotNull] string queue, [NotNull, Inst...
    method Schedule (line 222) | public static string Schedule(
    method Schedule (line 238) | public static string Schedule(
    method Schedule (line 254) | public static string Schedule(
    method Schedule (line 270) | public static string Schedule(
    method Schedule (line 286) | public static string Schedule(
    method Schedule (line 302) | public static string Schedule(
    method Schedule (line 318) | public static string Schedule(
    method Schedule (line 334) | public static string Schedule(
    method Schedule (line 351) | public static string Schedule<T>(
    method Schedule (line 368) | public static string Schedule<T>(
    method Schedule (line 385) | public static string Schedule<T>(
    method Schedule (line 402) | public static string Schedule<T>(
    method Schedule (line 419) | public static string Schedule<T>(
    method Schedule (line 436) | public static string Schedule<T>(
    method Schedule (line 453) | public static string Schedule<T>(
    method Schedule (line 470) | public static string Schedule<T>(
    method Delete (line 486) | public static bool Delete([NotNull] string jobId)
    method Delete (line 501) | public static bool Delete([NotNull] string jobId, [CanBeNull] string f...
    method Requeue (line 513) | public static bool Requeue([NotNull] string jobId)
    method Requeue (line 528) | public static bool Requeue([NotNull] string jobId, [CanBeNull] string ...
    method Reschedule (line 541) | public static bool Reschedule([NotNull] string jobId, TimeSpan delay)
    method Reschedule (line 557) | public static bool Reschedule([NotNull] string jobId, TimeSpan delay, ...
    method Reschedule (line 570) | public static bool Reschedule([NotNull] string jobId, DateTimeOffset e...
    method Reschedule (line 586) | public static bool Reschedule([NotNull] string jobId, DateTimeOffset e...
    method ContinueWith (line 598) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 613) | public static string ContinueJobWith(
    method ContinueWith (line 627) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 642) | public static string ContinueJobWith<T>(
    method ContinueWith (line 656) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 672) | public static string ContinueJobWith(
    method ContinueJobWith (line 689) | public static string ContinueJobWith(
    method ContinueWith (line 706) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 723) | public static string ContinueJobWith(
    method ContinueJobWith (line 741) | public static string ContinueJobWith(
    method ContinueWith (line 757) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 773) | public static string ContinueJobWith<T>(
    method ContinueJobWith (line 790) | public static string ContinueJobWith<T>(
    method ContinueWith (line 807) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 824) | public static string ContinueJobWith<T>(
    method ContinueJobWith (line 842) | public static string ContinueJobWith<T>(

FILE: src/Hangfire.Core/BackgroundJobClient.cs
  class BackgroundJobClient (line 47) | public class BackgroundJobClient : IBackgroundJobClient, IBackgroundJobC...
    method BackgroundJobClient (line 62) | public BackgroundJobClient()
    method BackgroundJobClient (line 75) | public BackgroundJobClient([NotNull] JobStorage storage)
    method BackgroundJobClient (line 88) | public BackgroundJobClient([NotNull] JobStorage storage, [NotNull] IJo...
    method BackgroundJobClient (line 105) | public BackgroundJobClient(
    method Create (line 143) | public string Create(Job job, IState state) => Create(job, state, null);
    method Create (line 146) | public string Create(Job job, IState state, IDictionary<string, object...
    method ChangeState (line 168) | public bool ChangeState(string jobId, IState state, string expectedState)

FILE: src/Hangfire.Core/BackgroundJobClientException.cs
  class BackgroundJobClientException (line 32) | public class BackgroundJobClientException : CreateJobFailedException
    method BackgroundJobClientException (line 41) | public BackgroundJobClientException(string message, Exception inner) :...
    method BackgroundJobClientException (line 52) | protected BackgroundJobClientException(SerializationInfo info, Streami...

FILE: src/Hangfire.Core/BackgroundJobClientExtensions.cs
  class BackgroundJobClientExtensions (line 31) | public static class BackgroundJobClientExtensions
    method Enqueue (line 43) | public static string Enqueue(
    method Enqueue (line 62) | public static string Enqueue(
    method Enqueue (line 81) | public static string Enqueue(
    method Enqueue (line 100) | public static string Enqueue(
    method Enqueue (line 120) | public static string Enqueue<T>(
    method Enqueue (line 140) | public static string Enqueue<T>(
    method Enqueue (line 160) | public static string Enqueue<T>(
    method Enqueue (line 180) | public static string Enqueue<T>(
    method Schedule (line 197) | public static string Schedule(
    method Schedule (line 215) | public static string Schedule(
    method Schedule (line 233) | public static string Schedule(
    method Schedule (line 251) | public static string Schedule(
    method Schedule (line 269) | public static string Schedule(
    method Schedule (line 287) | public static string Schedule(
    method Schedule (line 305) | public static string Schedule(
    method Schedule (line 323) | public static string Schedule(
    method Schedule (line 343) | public static string Schedule<T>(
    method Schedule (line 363) | public static string Schedule<T>(
    method Schedule (line 383) | public static string Schedule<T>(
    method Schedule (line 403) | public static string Schedule<T>(
    method Schedule (line 422) | public static string Schedule<T>(
    method Schedule (line 441) | public static string Schedule<T>(
    method Schedule (line 460) | public static string Schedule<T>(
    method Schedule (line 479) | public static string Schedule<T>(
    method Create (line 496) | public static string Create(
    method Create (line 515) | public static string Create(
    method Create (line 534) | public static string Create(
    method Create (line 553) | public static string Create(
    method Create (line 573) | public static string Create<T>(
    method Create (line 593) | public static string Create<T>(
    method Create (line 614) | public static string Create<T>(
    method Create (line 635) | public static string Create<T>(
    method ChangeState (line 656) | public static bool ChangeState(
    method Delete (line 686) | public static bool Delete([NotNull] this IBackgroundJobClient client, ...
    method Delete (line 715) | public static bool Delete(
    method Requeue (line 734) | public static bool Requeue([NotNull] this IBackgroundJobClient client,...
    method Reschedule (line 751) | public static bool Reschedule(
    method Reschedule (line 772) | public static bool Reschedule([NotNull] this IBackgroundJobClient clie...
    method Reschedule (line 789) | public static bool Reschedule(
    method Reschedule (line 810) | public static bool Reschedule([NotNull] this IBackgroundJobClient clie...
    method Requeue (line 826) | public static bool Requeue(
    method ContinueWith (line 845) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 862) | public static string ContinueJobWith(
    method ContinueWith (line 878) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 895) | public static string ContinueJobWith<T>(
    method ContinueWith (line 913) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 933) | public static string ContinueJobWith(
    method ContinueWith (line 952) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 972) | public static string ContinueJobWith<T>(
    method ContinueWith (line 990) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 1009) | public static string ContinueJobWith(
    method ContinueWith (line 1027) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 1046) | public static string ContinueJobWith<T>(
    method ContinueWith (line 1064) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 1084) | public static string ContinueJobWith(
    method ContinueJobWith (line 1108) | public static string ContinueJobWith(
    method ContinueWith (line 1133) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 1155) | public static string ContinueJobWith(
    method ContinueJobWith (line 1181) | public static string ContinueJobWith(
    method ContinueWith (line 1204) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 1224) | public static string ContinueJobWith<T>(
    method ContinueJobWith (line 1248) | public static string ContinueJobWith<T>(
    method ContinueWith (line 1273) | [Obsolete("Deprecated for clarity, please use ContinueJobWith method w...
    method ContinueJobWith (line 1295) | public static string ContinueJobWith<T>(
    method ContinueJobWith (line 1321) | public static string ContinueJobWith<T>(

FILE: src/Hangfire.Core/BackgroundJobServer.cs
  class BackgroundJobServer (line 31) | public class BackgroundJobServer : IBackgroundProcessingServer
    method BackgroundJobServer (line 42) | public BackgroundJobServer()
    method BackgroundJobServer (line 52) | public BackgroundJobServer([NotNull] JobStorage storage)
    method BackgroundJobServer (line 62) | public BackgroundJobServer([NotNull] BackgroundJobServerOptions options)
    method BackgroundJobServer (line 73) | public BackgroundJobServer([NotNull] BackgroundJobServerOptions option...
    method BackgroundJobServer (line 78) | public BackgroundJobServer(
    method BackgroundJobServer (line 88) | [Obsolete("Create your own BackgroundJobServer-like type and pass cust...
    method SendStop (line 147) | public void SendStop()
    method Dispose (line 153) | public void Dispose()
    method Start (line 159) | [Obsolete("This method is a stub. There is no need to call the `Start`...
    method Stop (line 164) | [Obsolete("Please call the `Shutdown` method instead. Will be removed ...
    method Stop (line 170) | [Obsolete("Please call the `Shutdown` method instead. Will be removed ...
    method WaitForShutdown (line 176) | public bool WaitForShutdown(TimeSpan timeout)
    method WaitForShutdownAsync (line 181) | public Task WaitForShutdownAsync(CancellationToken cancellationToken)
    method GetRequiredProcesses (line 186) | private IEnumerable<IBackgroundProcessDispatcherBuilder> GetRequiredPr...
    method GetProcessingServerOptions (line 236) | private BackgroundProcessingServerOptions GetProcessingServerOptions()

FILE: src/Hangfire.Core/BackgroundJobServerOptions.cs
  class BackgroundJobServerOptions (line 26) | public class BackgroundJobServerOptions
    method BackgroundJobServerOptions (line 40) | public BackgroundJobServerOptions()

FILE: src/Hangfire.Core/CaptureCultureAttribute.cs
  class CaptureCultureAttribute (line 26) | public sealed class CaptureCultureAttribute : JobFilterAttribute, IClien...
    method CaptureCultureAttribute (line 30) | public CaptureCultureAttribute() : this(null)
    method CaptureCultureAttribute (line 34) | public CaptureCultureAttribute([CanBeNull] string defaultCultureName, ...
    method CaptureCultureAttribute (line 39) | public CaptureCultureAttribute(
    method OnCreating (line 74) | public void OnCreating(CreatingContext context)
    method OnCreated (line 106) | public void OnCreated(CreatedContext context)
    method OnPerforming (line 110) | public void OnPerforming(PerformingContext context)
    method OnPerformed (line 147) | public void OnPerformed(PerformedContext context)
    method SetCurrentCulture (line 161) | private static void SetCurrentCulture(CultureInfo value)
    method SetCurrentUICulture (line 171) | private static void SetCurrentUICulture(CultureInfo value)
    method GetCultureInfo (line 180) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA182...

FILE: src/Hangfire.Core/Client/BackgroundJobFactory.cs
  class BackgroundJobFactory (line 26) | public class BackgroundJobFactory : IBackgroundJobFactory
    method BackgroundJobFactory (line 31) | public BackgroundJobFactory()
    method BackgroundJobFactory (line 36) | public BackgroundJobFactory([NotNull] IJobFilterProvider filterProvider)
    method BackgroundJobFactory (line 61) | internal BackgroundJobFactory(
    method Create (line 74) | public BackgroundJob Create(CreateContext context)
    method GetFilters (line 105) | private JobFilterInfo GetFilters(Job job)
    method CreateWithFilters (line 110) | private CreatedContext CreateWithFilters(
    method InvokeNextClientFilter (line 120) | private static CreatedContext InvokeNextClientFilter(
    method InvokeClientFilter (line 135) | private static CreatedContext InvokeClientFilter(
    method InvokeOnCreating (line 186) | private static void InvokeOnCreating(KeyValuePair<IClientFilter, Creat...
    method InvokeOnCreated (line 199) | private static void InvokeOnCreated(KeyValuePair<IClientFilter, Create...
    method InvokeExceptionFilters (line 212) | private static void InvokeExceptionFilters(
    method InvokeOnClientException (line 224) | private static void InvokeOnClientException(KeyValuePair<IClientExcept...

FILE: src/Hangfire.Core/Client/ClientExceptionContext.cs
  class ClientExceptionContext (line 24) | public class ClientExceptionContext : CreateContext
    method ClientExceptionContext (line 26) | public ClientExceptionContext(CreateContext createContext, Exception e...

FILE: src/Hangfire.Core/Client/CoreBackgroundJobFactory.cs
  class CoreBackgroundJobFactory (line 29) | internal sealed class CoreBackgroundJobFactory : IBackgroundJobFactory
    method CoreBackgroundJobFactory (line 36) | public CoreBackgroundJobFactory([NotNull] IStateMachine stateMachine)
    method Create (line 57) | public BackgroundJob Create(CreateContext context)
    method CreateBackgroundJobTwoSteps (line 76) | private BackgroundJob CreateBackgroundJobTwoSteps(CreateContext contex...
    method RetryOnException (line 143) | private void RetryOnException<TContext>(ref int attemptsLeft, Action<i...
    method RetryOnException (line 152) | private TResult RetryOnException<TContext, TResult>(ref int attemptsLe...
    method GetRetryDelay (line 185) | private static TimeSpan GetRetryDelay(int retryAttempt)
    type JobCreateContext (line 196) | private readonly record struct JobCreateContext
    type JobInitializeContext (line 204) | private readonly record struct JobInitializeContext

FILE: src/Hangfire.Core/Client/CreateContext.cs
  class CreateContext (line 29) | public class CreateContext
    method CreateContext (line 31) | public CreateContext([NotNull] CreateContext context)
    method CreateContext (line 37) | public CreateContext(
    method CreateContext (line 46) | public CreateContext(
    method CreateContext (line 56) | internal CreateContext(

FILE: src/Hangfire.Core/Client/CreatedContext.cs
  class CreatedContext (line 27) | public class CreatedContext : CreateContext
    method CreatedContext (line 29) | public CreatedContext(
    method SetJobParameter (line 68) | [Obsolete("This method only throws InvalidOperationException, will be ...

FILE: src/Hangfire.Core/Client/CreatingContext.cs
  class CreatingContext (line 24) | public class CreatingContext : CreateContext
    method CreatingContext (line 26) | public CreatingContext(CreateContext context)
    method SetJobParameter (line 47) | public void SetJobParameter(string name, object value)
    method GetJobParameter (line 65) | public T GetJobParameter<T>(string name)

FILE: src/Hangfire.Core/Client/IBackgroundJobFactory.cs
  type IBackgroundJobFactory (line 26) | public interface IBackgroundJobFactory
    method Create (line 37) | [CanBeNull]

FILE: src/Hangfire.Core/Client/IClientExceptionFilter.cs
  type IClientExceptionFilter (line 21) | public interface IClientExceptionFilter
    method OnClientException (line 27) | void OnClientException(ClientExceptionContext filterContext);

FILE: src/Hangfire.Core/Client/IClientFilter.cs
  type IClientFilter (line 21) | public interface IClientFilter
    method OnCreating (line 27) | void OnCreating(CreatingContext context);
    method OnCreated (line 33) | void OnCreated(CreatedContext context);

FILE: src/Hangfire.Core/Common/CachedExpressionCompiler.cs
  class CachedExpressionCompiler (line 16) | [ExcludeFromCodeCoverage]
    method Evaluate (line 26) | public static object Evaluate(Expression arg)
    method Wrap (line 37) | private static Func<object, object> Wrap(Expression arg)

FILE: src/Hangfire.Core/Common/CancellationTokenExtentions.cs
  class CancellationTokenExtentions (line 23) | public static class CancellationTokenExtentions
    method GetCancellationEvent (line 31) | public static CancellationEvent GetCancellationEvent(this Cancellation...
    method WaitOrThrow (line 43) | public static void WaitOrThrow(this CancellationToken cancellationToke...
    method Wait (line 57) | public static bool Wait(this CancellationToken cancellationToken, Time...
    class CancellationEvent (line 90) | public sealed class CancellationEvent : IDisposable
      method CancellationEvent (line 97) | public CancellationEvent(CancellationToken cancellationToken)
      method Dispose (line 105) | public void Dispose()
      method SetEvent (line 111) | private static void SetEvent(object state)

FILE: src/Hangfire.Core/Common/ExpressionUtil/BinaryExpressionFingerprint.cs
  class BinaryExpressionFingerprint (line 15) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method BinaryExpressionFingerprint (line 20) | public BinaryExpressionFingerprint(ExpressionType nodeType, Type type,...
    method Equals (line 32) | public override bool Equals(object obj)
    method AddToHashCodeCombiner (line 40) | internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)

FILE: src/Hangfire.Core/Common/ExpressionUtil/CachedExpressionCompiler.cs
  class CachedExpressionCompiler (line 14) | [ExcludeFromCodeCoverage]
    method Process (line 22) | public static Func<TModel, TValue> Process<TModel, TValue>(Expression<...
    class Compiler (line 27) | private static class Compiler<TIn, TOut>
      method Compile (line 40) | public static Func<TIn, TOut> Compile(Expression<Func<TIn, TOut>> expr)
      method CompileFromConstLookup (line 49) | private static Func<TIn, TOut> CompileFromConstLookup(Expression<Fun...
      method CompileFromIdentityFunc (line 63) | private static Func<TIn, TOut> CompileFromIdentityFunc(Expression<Fu...
      method CompileFromFingerprint (line 76) | private static Func<TIn, TOut> CompileFromFingerprint(Expression<Fun...
      method CompileFromMemberAccess (line 98) | private static Func<TIn, TOut> CompileFromMemberAccess(Expression<Fu...
      method CompileSlow (line 137) | private static Func<TIn, TOut> CompileSlow(Expression<Func<TIn, TOut...

FILE: src/Hangfire.Core/Common/ExpressionUtil/ConditionalExpressionFingerprint.cs
  class ConditionalExpressionFingerprint (line 14) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method ConditionalExpressionFingerprint (line 19) | public ConditionalExpressionFingerprint(ExpressionType nodeType, Type ...
    method Equals (line 26) | public override bool Equals(object obj)

FILE: src/Hangfire.Core/Common/ExpressionUtil/ConstantExpressionFingerprint.cs
  class ConstantExpressionFingerprint (line 18) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method ConstantExpressionFingerprint (line 23) | public ConstantExpressionFingerprint(ExpressionType nodeType, Type type)
    method Equals (line 30) | public override bool Equals(object obj)

FILE: src/Hangfire.Core/Common/ExpressionUtil/DefaultExpressionFingerprint.cs
  class DefaultExpressionFingerprint (line 14) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method DefaultExpressionFingerprint (line 19) | public DefaultExpressionFingerprint(ExpressionType nodeType, Type type)
    method Equals (line 26) | public override bool Equals(object obj)

FILE: src/Hangfire.Core/Common/ExpressionUtil/ExpressionFingerprint.cs
  class ExpressionFingerprint (line 12) | [ExcludeFromCodeCoverage]
    method ExpressionFingerprint (line 15) | protected ExpressionFingerprint(ExpressionType nodeType, Type type)
    method AddToHashCodeCombiner (line 27) | internal virtual void AddToHashCodeCombiner(HashCodeCombiner combiner)
    method Equals (line 33) | protected bool Equals(ExpressionFingerprint other)
    method Equals (line 40) | public override bool Equals(object obj)
    method GetHashCode (line 45) | public override int GetHashCode()

FILE: src/Hangfire.Core/Common/ExpressionUtil/ExpressionFingerprintChain.cs
  class ExpressionFingerprintChain (line 49) | [ExcludeFromCodeCoverage]
    method Equals (line 54) | public bool Equals(ExpressionFingerprintChain other)
    method Equals (line 75) | public override bool Equals(object obj)
    method GetHashCode (line 80) | public override int GetHashCode()

FILE: src/Hangfire.Core/Common/ExpressionUtil/FingerprintingExpressionVisitor.cs
  class FingerprintingExpressionVisitor (line 12) | [ExcludeFromCodeCoverage]
    method FingerprintingExpressionVisitor (line 20) | private FingerprintingExpressionVisitor()
    method GiveUp (line 24) | private T GiveUp<T>(T node)
    method GetFingerprintChain (line 34) | public static ExpressionFingerprintChain GetFingerprintChain(Expressio...
    method Visit (line 51) | public override Expression Visit(Expression node)
    method VisitBinary (line 64) | protected override Expression VisitBinary(BinaryExpression node)
    method VisitBlock (line 74) | protected override Expression VisitBlock(BlockExpression node)
    method VisitCatchBlock (line 79) | protected override CatchBlock VisitCatchBlock(CatchBlock node)
    method VisitConditional (line 84) | protected override Expression VisitConditional(ConditionalExpression n...
    method VisitConstant (line 94) | protected override Expression VisitConstant(ConstantExpression node)
    method VisitDebugInfo (line 106) | protected override Expression VisitDebugInfo(DebugInfoExpression node)
    method VisitDefault (line 111) | protected override Expression VisitDefault(DefaultExpression node)
    method VisitDynamic (line 122) | protected override Expression VisitDynamic(DynamicExpression node)
    method VisitElementInit (line 128) | protected override ElementInit VisitElementInit(ElementInit node)
    method VisitExtension (line 133) | protected override Expression VisitExtension(Expression node)
    method VisitGoto (line 138) | protected override Expression VisitGoto(GotoExpression node)
    method VisitIndex (line 143) | protected override Expression VisitIndex(IndexExpression node)
    method VisitInvocation (line 153) | protected override Expression VisitInvocation(InvocationExpression node)
    method VisitLabel (line 158) | protected override Expression VisitLabel(LabelExpression node)
    method VisitLabelTarget (line 163) | protected override LabelTarget VisitLabelTarget(LabelTarget node)
    method VisitLambda (line 168) | protected override Expression VisitLambda<T>(Expression<T> node)
    method VisitListInit (line 178) | protected override Expression VisitListInit(ListInitExpression node)
    method VisitLoop (line 183) | protected override Expression VisitLoop(LoopExpression node)
    method VisitMember (line 188) | protected override Expression VisitMember(MemberExpression node)
    method VisitMemberAssignment (line 198) | protected override MemberAssignment VisitMemberAssignment(MemberAssign...
    method VisitMemberBinding (line 203) | protected override MemberBinding VisitMemberBinding(MemberBinding node)
    method VisitMemberInit (line 208) | protected override Expression VisitMemberInit(MemberInitExpression node)
    method VisitMemberListBinding (line 213) | protected override MemberListBinding VisitMemberListBinding(MemberList...
    method VisitMemberMemberBinding (line 218) | protected override MemberMemberBinding VisitMemberMemberBinding(Member...
    method VisitMethodCall (line 223) | protected override Expression VisitMethodCall(MethodCallExpression node)
    method VisitNew (line 233) | protected override Expression VisitNew(NewExpression node)
    method VisitNewArray (line 238) | protected override Expression VisitNewArray(NewArrayExpression node)
    method VisitParameter (line 243) | protected override Expression VisitParameter(ParameterExpression node)
    method VisitRuntimeVariables (line 262) | protected override Expression VisitRuntimeVariables(RuntimeVariablesEx...
    method VisitSwitch (line 267) | protected override Expression VisitSwitch(SwitchExpression node)
    method VisitSwitchCase (line 272) | protected override SwitchCase VisitSwitchCase(SwitchCase node)
    method VisitTry (line 277) | protected override Expression VisitTry(TryExpression node)
    method VisitTypeBinary (line 282) | protected override Expression VisitTypeBinary(TypeBinaryExpression node)
    method VisitUnary (line 292) | protected override Expression VisitUnary(UnaryExpression node)

FILE: src/Hangfire.Core/Common/ExpressionUtil/HashCodeCombiner.cs
  class HashCodeCombiner (line 9) | [ExcludeFromCodeCoverage]
    method AddFingerprint (line 16) | public void AddFingerprint(ExpressionFingerprint fingerprint)
    method AddEnumerable (line 28) | public void AddEnumerable(IEnumerable e)
    method AddInt32 (line 46) | public void AddInt32(int i)
    method AddObject (line 51) | public void AddObject(object o)

FILE: src/Hangfire.Core/Common/ExpressionUtil/HoistingExpressionVisitor.cs
  class HoistingExpressionVisitor (line 15) | [ExcludeFromCodeCoverage]
    method HoistingExpressionVisitor (line 22) | private HoistingExpressionVisitor()
    method Hoist (line 26) | public static Expression<Hoisted<TIn, TOut>> Hoist(Expression<Func<TIn...
    method VisitConstant (line 36) | protected override Expression VisitConstant(ConstantExpression node)

FILE: src/Hangfire.Core/Common/ExpressionUtil/IndexExpressionFingerprint.cs
  class IndexExpressionFingerprint (line 15) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method IndexExpressionFingerprint (line 20) | public IndexExpressionFingerprint(ExpressionType nodeType, Type type, ...
    method Equals (line 32) | public override bool Equals(object obj)
    method AddToHashCodeCombiner (line 40) | internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)

FILE: src/Hangfire.Core/Common/ExpressionUtil/LambdaExpressionFingerprint.cs
  class LambdaExpressionFingerprint (line 14) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method LambdaExpressionFingerprint (line 19) | public LambdaExpressionFingerprint(ExpressionType nodeType, Type type)
    method Equals (line 26) | public override bool Equals(object obj)

FILE: src/Hangfire.Core/Common/ExpressionUtil/MemberExpressionFingerprint.cs
  class MemberExpressionFingerprint (line 15) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method MemberExpressionFingerprint (line 20) | public MemberExpressionFingerprint(ExpressionType nodeType, Type type,...
    method Equals (line 29) | public override bool Equals(object obj)
    method AddToHashCodeCombiner (line 37) | internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)

FILE: src/Hangfire.Core/Common/ExpressionUtil/MethodCallExpressionFingerprint.cs
  class MethodCallExpressionFingerprint (line 15) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method MethodCallExpressionFingerprint (line 20) | public MethodCallExpressionFingerprint(ExpressionType nodeType, Type t...
    method Equals (line 32) | public override bool Equals(object obj)
    method AddToHashCodeCombiner (line 40) | internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)

FILE: src/Hangfire.Core/Common/ExpressionUtil/ParameterExpressionFingerprint.cs
  class ParameterExpressionFingerprint (line 14) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method ParameterExpressionFingerprint (line 19) | public ParameterExpressionFingerprint(ExpressionType nodeType, Type ty...
    method Equals (line 28) | public override bool Equals(object obj)
    method AddToHashCodeCombiner (line 36) | internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)

FILE: src/Hangfire.Core/Common/ExpressionUtil/TypeBinaryExpressionFingerprint.cs
  class TypeBinaryExpressionFingerprint (line 14) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method TypeBinaryExpressionFingerprint (line 19) | public TypeBinaryExpressionFingerprint(ExpressionType nodeType, Type t...
    method Equals (line 28) | public override bool Equals(object obj)
    method AddToHashCodeCombiner (line 36) | internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)

FILE: src/Hangfire.Core/Common/ExpressionUtil/UnaryExpressionFingerprint.cs
  class UnaryExpressionFingerprint (line 15) | [SuppressMessage("Microsoft.Usage", "CA2218:OverrideGetHashCodeOnOverrid...
    method UnaryExpressionFingerprint (line 20) | public UnaryExpressionFingerprint(ExpressionType nodeType, Type type, ...
    method Equals (line 32) | public override bool Equals(object obj)
    method AddToHashCodeCombiner (line 40) | internal override void AddToHashCodeCombiner(HashCodeCombiner combiner)

FILE: src/Hangfire.Core/Common/IJobFilter.cs
  type IJobFilter (line 22) | public interface IJobFilter

FILE: src/Hangfire.Core/Common/IJobFilterProvider.cs
  type IJobFilterProvider (line 23) | public interface IJobFilterProvider
    method GetFilters (line 32) | IEnumerable<JobFilter> GetFilters(Job job);

FILE: src/Hangfire.Core/Common/Job.cs
  class Job (line 79) | public partial class Job
    method Job (line 94) | public Job([NotNull] MethodInfo method)
    method Job (line 110) | public Job([NotNull] MethodInfo method, [NotNull] params object[] args)
    method Job (line 131) | public Job([NotNull] Type type, [NotNull] MethodInfo method)
    method Job (line 153) | public Job([NotNull] Type type, [NotNull] MethodInfo method, [NotNull]...
    method Job (line 175) | public Job([NotNull] Type type, [NotNull] MethodInfo method, [NotNull]...
    method Job (line 198) | public Job([NotNull] Type type, [NotNull] MethodInfo method, [NotNull]...
    method ToString (line 245) | public override string ToString()
    method ToString (line 250) | public string ToString(bool includeQueue)
    method GetTypeFilterAttributes (line 265) | internal IEnumerable<JobFilterAttribute> GetTypeFilterAttributes(bool ...
    method GetMethodFilterAttributes (line 272) | internal IEnumerable<JobFilterAttribute> GetMethodFilterAttributes(boo...
    method GetFilterAttributes (line 279) | private static IEnumerable<JobFilterAttribute> GetFilterAttributes(Mem...
    method FromExpression (line 312) | public static Job FromExpression([NotNull, InstantHandle] Expression<A...
    method FromExpression (line 317) | public static Job FromExpression([NotNull, InstantHandle] Expression<A...
    method FromExpression (line 350) | public static Job FromExpression([NotNull, InstantHandle] Expression<F...
    method FromExpression (line 355) | public static Job FromExpression([NotNull, InstantHandle] Expression<F...
    method FromExpression (line 380) | public static Job FromExpression<TType>([NotNull, InstantHandle] Expre...
    method FromExpression (line 385) | public static Job FromExpression<TType>([NotNull, InstantHandle] Expre...
    method FromExpression (line 410) | public static Job FromExpression<TType>([NotNull, InstantHandle] Expre...
    method FromExpression (line 415) | public static Job FromExpression<TType>([NotNull, InstantHandle] Expre...
    method FromExpression (line 420) | private static Job FromExpression([NotNull] LambdaExpression methodCal...
    method Validate (line 465) | private static void Validate(
    method GetExpressionValues (line 540) | private static object[] GetExpressionValues(ReadOnlyCollection<Express...
    method GetExpressionValue (line 553) | private static object GetExpressionValue(Expression expression)

FILE: src/Hangfire.Core/Common/JobFilter.cs
  class JobFilter (line 25) | public class JobFilter
    method JobFilter (line 38) | public JobFilter(object instance, JobFilterScope scope, int? order)

FILE: src/Hangfire.Core/Common/JobFilterAttribute.cs
  class JobFilterAttribute (line 28) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | At...
    method AllowsMultiple (line 57) | private static bool AllowsMultiple(Type attributeType)

FILE: src/Hangfire.Core/Common/JobFilterAttributeFilterProvider.cs
  class JobFilterAttributeFilterProvider (line 24) | public class JobFilterAttributeFilterProvider : IJobFilterProvider
    method JobFilterAttributeFilterProvider (line 32) | public JobFilterAttributeFilterProvider()
    method JobFilterAttributeFilterProvider (line 42) | public JobFilterAttributeFilterProvider(bool cacheAttributeInstances)
    method GetTypeAttributes (line 47) | protected virtual IEnumerable<JobFilterAttribute> GetTypeAttributes(Jo...
    method GetMethodAttributes (line 52) | protected virtual IEnumerable<JobFilterAttribute> GetMethodAttributes(...
    method GetFilters (line 57) | public virtual IEnumerable<JobFilter> GetFilters(Job job)

FILE: src/Hangfire.Core/Common/JobFilterCollection.cs
  class JobFilterCollection (line 37) | public class JobFilterCollection : IJobFilterProvider, IEnumerable<JobFi...
    method Add (line 50) | public void Add(object filter)
    method Add (line 61) | public void Add(object filter, int order)
    method AddInternal (line 66) | private void AddInternal(object filter, int? order)
    method Clear (line 75) | public void Clear()
    method Contains (line 85) | public bool Contains(object filter)
    method Remove (line 94) | public void Remove(object filter)
    method Remove (line 103) | public void Remove<T>()
    method Remove (line 112) | public void Remove(Type type)
    method GetEnumerator (line 117) | public IEnumerator<JobFilter> GetEnumerator()
    method GetFilters (line 122) | IEnumerable<JobFilter> IJobFilterProvider.GetFilters(Job job)
    method GetEnumerator (line 127) | IEnumerator IEnumerable.GetEnumerator()
    method ValidateFilterInstance (line 133) | private static void ValidateFilterInstance(object instance)

FILE: src/Hangfire.Core/Common/JobFilterInfo.cs
  type JobFilterInfo (line 27) | internal readonly struct JobFilterInfo
    method JobFilterInfo (line 33) | public JobFilterInfo(IEnumerable<JobFilter> filters)
    type FilterCollection (line 98) | public readonly struct FilterCollection<T>(List<JobFilter> filters)
      method GetEnumerator (line 100) | public Enumerator GetEnumerator() => new Enumerator(filters);
      type Enumerator (line 102) | public ref struct Enumerator(List<JobFilter> filters)
        method MoveNext (line 108) | public bool MoveNext()
        method MoveNextRare (line 126) | private bool MoveNextRare()
    type ReversedFilterCollection (line 135) | public readonly struct ReversedFilterCollection<T>(List<JobFilter> fil...
      method GetEnumerator (line 137) | public ReversedEnumerator GetEnumerator() => new ReversedEnumerator(...
      type ReversedEnumerator (line 139) | public ref struct ReversedEnumerator(List<JobFilter> filters)
        method MoveNext (line 145) | public bool MoveNext()
        method MoveNextRare (line 163) | private bool MoveNextRare()

FILE: src/Hangfire.Core/Common/JobFilterProviderCollection.cs
  class JobFilterProviderCollection (line 26) | public class JobFilterProviderCollection : Collection<IJobFilterProvider...
    method JobFilterProviderCollection (line 34) | public JobFilterProviderCollection()
    method JobFilterProviderCollection (line 38) | public JobFilterProviderCollection(params IJobFilterProvider[] providers)
    method GetFilters (line 48) | public IEnumerable<JobFilter> GetFilters(Job job)
    method RemoveDuplicates (line 67) | private static void RemoveDuplicates(List<JobFilter> filters)
    method AllowMultiple (line 83) | private static bool AllowMultiple(object filterInstance)
    class JobFilterComparer (line 93) | private sealed class JobFilterComparer : IComparer<JobFilter>
      method Compare (line 95) | public int Compare(JobFilter x, JobFilter y)

FILE: src/Hangfire.Core/Common/JobFilterProviders.cs
  class JobFilterProviders (line 21) | public static class JobFilterProviders
    method JobFilterProviders (line 23) | static JobFilterProviders()

FILE: src/Hangfire.Core/Common/JobFilterScope.cs
  type JobFilterScope (line 99) | public enum JobFilterScope

FILE: src/Hangfire.Core/Common/JobHelper.cs
  class JobHelper (line 23) | public static class JobHelper
    method SetSerializerSettings (line 25) | [Obsolete("Please use `GlobalConfiguration.UseSerializerSettings` inst...
    method ToJson (line 31) | [Obsolete("Please use `SerializationHelper.Serialize` with appropriate...
    method FromJson (line 37) | [Obsolete("Please use `SerializationHelper.Deserialize` with appropria...
    method FromJson (line 43) | [Obsolete("Please use `SerializationHelper.Deserialize` with appropria...
    method ToTimestamp (line 53) | public static long ToTimestamp(DateTime value)
    method FromTimestamp (line 59) | public static DateTime FromTimestamp(long value)
    method ToMillisecondTimestamp (line 64) | public static long ToMillisecondTimestamp(DateTime value)
    method FromMillisecondTimestamp (line 70) | public static DateTime FromMillisecondTimestamp(long value)
    method SerializeDateTime (line 75) | public static string SerializeDateTime(DateTime value)
    method DeserializeDateTime (line 87) | public static DateTime DeserializeDateTime(string value)
    method DeserializeNullableDateTime (line 99) | public static DateTime? DeserializeNullableDateTime(string value)

FILE: src/Hangfire.Core/Common/JobLoadException.cs
  class JobLoadException (line 29) | public class JobLoadException : Exception
    method JobLoadException (line 35) | public JobLoadException(string message, Exception inner) : base(messag...
    method JobLoadException (line 46) | protected JobLoadException(SerializationInfo info, StreamingContext co...

FILE: src/Hangfire.Core/Common/LanguagePolyfills.cs
  class IsExternalInit (line 7) | [EditorBrowsable(EditorBrowsableState.Never)]
  class RequiredMemberAttribute (line 14) | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | Attri...
  class CompilerFeatureRequiredAttribute (line 17) | [AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = ...
    method CompilerFeatureRequiredAttribute (line 20) | public CompilerFeatureRequiredAttribute(string featureName)
  class SetsRequiredMembersAttribute (line 38) | [AttributeUsage(AttributeTargets.Constructor, AllowMultiple = false, Inh...

FILE: src/Hangfire.Core/Common/MethodInfoExtensions.cs
  class MethodInfoExtensions (line 21) | internal static class MethodInfoExtensions
    method GetNormalizedName (line 23) | public static string GetNormalizedName(this MethodInfo methodInfo)

FILE: src/Hangfire.Core/Common/ReflectedAttributeCache.cs
  class ReflectedAttributeCache (line 26) | internal static class ReflectedAttributeCache
    method GetTypeFilterAttributes (line 34) | public static ICollection<JobFilterAttribute> GetTypeFilterAttributes(...
    method GetMethodFilterAttributes (line 39) | public static ICollection<JobFilterAttribute> GetMethodFilterAttribute...
    method GetAttributes (line 44) | private static ReadOnlyCollection<TAttribute> GetAttributes<TMemberInf...

FILE: src/Hangfire.Core/Common/SerializationHelper.cs
  type SerializationOption (line 28) | public enum SerializationOption
  class SerializationHelper (line 51) | public static class SerializationHelper
    method Serialize (line 62) | public static string Serialize<T>([CanBeNull] T value)
    method Serialize (line 74) | public static string Serialize<T>([CanBeNull] T value, SerializationOp...
    method Serialize (line 86) | public static string Serialize([CanBeNull] object value, [CanBeNull] T...
    method Deserialize (line 132) | public static object Deserialize([CanBeNull] string value, [NotNull] T...
    method Deserialize (line 144) | public static object Deserialize([CanBeNull] string value, [NotNull] T...
    method Deserialize (line 190) | public static T Deserialize<T>([CanBeNull] string value)
    method Deserialize (line 203) | public static T Deserialize<T>([CanBeNull] string value, Serialization...
    method GetInternalSettings (line 209) | internal static JsonSerializerSettings GetInternalSettings()
    method SetUserSerializerSettings (line 229) | internal static void SetUserSerializerSettings([CanBeNull] JsonSeriali...
    method GetLegacyTypedSerializerSettings (line 234) | private static JsonSerializerSettings GetLegacyTypedSerializerSettings()
    method SetSimpleTypeNameAssemblyFormat (line 245) | private static void SetSimpleTypeNameAssemblyFormat(JsonSerializerSett...
    method GetSerializerSettings (line 257) | private static JsonSerializerSettings GetSerializerSettings(Serializat...
    method GetUserSerializerSettings (line 268) | private static JsonSerializerSettings GetUserSerializerSettings()

FILE: src/Hangfire.Core/Common/ShallowExceptionHelper.cs
  class ShallowExceptionHelper (line 23) | internal static class ShallowExceptionHelper
    method PreserveOriginalStackTrace (line 27) | public static void PreserveOriginalStackTrace(this Exception exception)
    method ToStringWithOriginalStackTrace (line 35) | public static string ToStringWithOriginalStackTrace([NotNull] this Exc...
    method ToStringHelper (line 41) | private static string ToStringHelper(Exception exception, bool isInner...
    method GetFirstLines (line 67) | private static string GetFirstLines(string text, int? numLines)
    method GetStackTrace (line 89) | private static string GetStackTrace(Exception ex, bool includeFileInfo)

FILE: src/Hangfire.Core/Common/TypeExtensions.cs
  class TypeExtensions (line 26) | internal static class TypeExtensions
    method ToGenericTypeString (line 30) | public static string ToGenericTypeString(this Type type)
    method GetNonOpenMatchingMethod (line 44) | public static MethodInfo GetNonOpenMatchingMethod(
    method GetAllGenericArguments (line 125) | public static Type[] GetAllGenericArguments(this TypeInfo type)
    method TypesMatchRecursive (line 130) | private static bool TypesMatchRecursive(TypeInfo parameterType, TypeIn...
    method GetFullNameWithoutNamespace (line 183) | private static string GetFullNameWithoutNamespace(this Type type)
    method ReplacePlusWithDotInNestedTypeName (line 197) | private static string ReplacePlusWithDotInNestedTypeName(this string t...
    method ReplaceGenericParametersInGenericTypeName (line 202) | private static string ReplaceGenericParametersInGenericTypeName(this s...

FILE: src/Hangfire.Core/Common/TypeHelper.cs
  class TypeHelper (line 26) | public class TypeHelper
    method DefaultTypeSerializer (line 57) | public static string DefaultTypeSerializer(Type type)
    method SimpleAssemblyTypeSerializer (line 62) | public static string SimpleAssemblyTypeSerializer(Type type)
    method DefaultTypeResolver (line 73) | public static Type DefaultTypeResolver(string typeName)
    method IgnoredAssemblyVersionTypeResolver (line 92) | public static Type IgnoredAssemblyVersionTypeResolver(string typeName)
    method SerializeType (line 104) | private static void SerializeType(Type type, bool withAssemblyName, St...
    method SerializeTypes (line 175) | private static void SerializeTypes(Type[] types, StringBuilder typeNam...
    method CachedAssemblyResolver (line 193) | private static Assembly CachedAssemblyResolver(AssemblyName assemblyName)
    method AssemblyResolver (line 198) | private static Assembly AssemblyResolver(string assemblyString)
    method TypeResolver (line 240) | private static Type TypeResolver(Assembly assembly, string typeName, b...

FILE: src/Hangfire.Core/Common/TypeHelperSerializationBinder.cs
  class TypeHelperSerializationBinder (line 22) | public sealed class TypeHelperSerializationBinder : SerializationBinder
    method BindToType (line 27) | public override Type BindToType(string assemblyName, string typeName)
    method BindToName (line 32) | public override void BindToName(Type serializedType, out string assemb...
    method GetAssemblyNameDelimiterIndex (line 48) | private static int GetAssemblyNameDelimiterIndex(string typeName)

FILE: src/Hangfire.Core/ContinuationsSupportAttribute.cs
  class ContinuationsSupportAttribute (line 28) | public class ContinuationsSupportAttribute : JobFilterAttribute, IElectS...
    method ContinuationsSupportAttribute (line 42) | public ContinuationsSupportAttribute()
    method ContinuationsSupportAttribute (line 47) | public ContinuationsSupportAttribute(bool pushResults)
    method ContinuationsSupportAttribute (line 52) | public ContinuationsSupportAttribute(HashSet<string> knownFinalStates)
    method ContinuationsSupportAttribute (line 57) | public ContinuationsSupportAttribute(bool pushResults, HashSet<string>...
    method ContinuationsSupportAttribute (line 62) | public ContinuationsSupportAttribute(
    method ContinuationsSupportAttribute (line 69) | public ContinuationsSupportAttribute(
    method OnStateElection (line 86) | public void OnStateElection(ElectStateContext context)
    method OnStateApplied (line 101) | public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransa...
    method DeserializeContinuations (line 106) | internal static List<Continuation> DeserializeContinuations(string ser...
    method AddContinuation (line 118) | private void AddContinuation(ElectStateContext context, AwaitingState ...
    method ExecuteContinuationsIfExist (line 187) | private void ExecuteContinuationsIfExist(ElectStateContext context)
    method GetContinuationState (line 281) | private StateData GetContinuationState(ElectStateContext context, stri...
    method ShouldStartContinuation (line 328) | private bool ShouldStartContinuation(string antecedentStateName, JobCo...
    method SetContinuations (line 350) | private static void SetContinuations(
    method GetContinuations (line 356) | private static List<Continuation> GetContinuations(ElectStateContext c...
    method OnStateUnapplied (line 375) | void IApplyStateFilter.OnStateUnapplied(ApplyStateContext context, IWr...
    type Continuation (line 379) | internal struct Continuation

FILE: src/Hangfire.Core/Cron.cs
  class Cron (line 23) | public static class Cron
    method Minutely (line 28) | public static string Minutely()
    method Hourly (line 36) | public static string Hourly()
    method Hourly (line 45) | public static string Hourly(int minute)
    method Daily (line 53) | public static string Daily()
    method Daily (line 63) | public static string Daily(int hour)
    method Daily (line 74) | public static string Daily(int hour, int minute)
    method Weekly (line 82) | public static string Weekly()
    method Weekly (line 92) | public static string Weekly(DayOfWeek dayOfWeek)
    method Weekly (line 103) | public static string Weekly(DayOfWeek dayOfWeek, int hour)
    method Weekly (line 115) | public static string Weekly(DayOfWeek dayOfWeek, int hour, int minute)
    method Monthly (line 124) | public static string Monthly()
    method Monthly (line 134) | public static string Monthly(int day)
    method Monthly (line 145) | public static string Monthly(int day, int hour)
    method Monthly (line 157) | public static string Monthly(int day, int hour, int minute)
    method Yearly (line 165) | public static string Yearly()
    method Yearly (line 175) | public static string Yearly(int month)
    method Yearly (line 186) | public static string Yearly(int month, int day)
    method Yearly (line 198) | public static string Yearly(int month, int day, int hour)
    method Yearly (line 211) | public static string Yearly(int month, int day, int hour, int minute)
    method Never (line 219) | public static string Never()
    method MinuteInterval (line 233) | public static string MinuteInterval(int interval)
    method HourInterval (line 247) | public static string HourInterval(int interval)
    method DayInterval (line 262) | public static string DayInterval(int interval)
    method MonthInterval (line 275) | public static string MonthInterval(int interval)
    method GetDescription (line 286) | [Obsolete("Please install `CronExpressionDescriptor` package manually ...

FILE: src/Hangfire.Core/Dashboard/BatchCommandDispatcher.cs
  class BatchCommandDispatcher (line 22) | internal sealed class BatchCommandDispatcher : IDashboardDispatcher
    method BatchCommandDispatcher (line 26) | public BatchCommandDispatcher(Action<DashboardContext, string> command)
    method BatchCommandDispatcher (line 32) | [Obsolete("Use the `BatchCommandDispatcher(Action<DashboardContext>, s...
    method Dispatch (line 39) | public async Task Dispatch(DashboardContext context)

FILE: src/Hangfire.Core/Dashboard/CombinedResourceDispatcher.cs
  class CombinedResourceDispatcher (line 25) | internal sealed class CombinedResourceDispatcher : EmbeddedResourceDispa...
    method CombinedResourceDispatcher (line 29) | public CombinedResourceDispatcher(
    method WriteResponse (line 38) | protected override async Task WriteResponse(DashboardResponse response)

FILE: src/Hangfire.Core/Dashboard/CommandDispatcher.cs
  class CommandDispatcher (line 22) | internal sealed class CommandDispatcher : IDashboardDispatcher
    method CommandDispatcher (line 26) | public CommandDispatcher(Func<DashboardContext, bool> command)
    method CommandDispatcher (line 32) | [Obsolete("Use the `CommandDispatcher(Func<DashboardContext, bool>)` c...
    method Dispatch (line 39) | public Task Dispatch(DashboardContext context)

FILE: src/Hangfire.Core/Dashboard/Content/js/hangfire.js
  function ErrorAlert (line 72) | function ErrorAlert(title, message) {
  function Metrics (line 96) | function Metrics() {
  function RealtimeGraph (line 133) | function RealtimeGraph(element, succeeded, failed, deleted, succeededStr...
  function HistoryGraph (line 218) | function HistoryGraph(element, succeeded, failed, deleted, succeededStr,...
  function StatisticsPoller (line 269) | function StatisticsPoller(metricsCallback, statisticsUrl, pollInterval) {
  function Page (line 331) | function Page(config) {

FILE: src/Hangfire.Core/Dashboard/Content/resx/Strings.Designer.cs
  class Strings (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Strings (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: src/Hangfire.Core/Dashboard/DashboardContext.cs
  class DashboardContext (line 34) | public abstract class DashboardContext
    method DashboardContext (line 46) | protected DashboardContext([NotNull] JobStorage storage, [NotNull] Das...
    method GetBackgroundJobClient (line 102) | public virtual IBackgroundJobClient GetBackgroundJobClient()
    method GetRecurringJobManager (line 111) | public virtual IRecurringJobManager GetRecurringJobManager()

FILE: src/Hangfire.Core/Dashboard/DashboardMetric.cs
  class DashboardMetric (line 20) | public class DashboardMetric
    method DashboardMetric (line 22) | public DashboardMetric(string name, Func<RazorPage, Metric> func)
    method DashboardMetric (line 27) | public DashboardMetric(string name, string title, Func<RazorPage, Metr...

FILE: src/Hangfire.Core/Dashboard/DashboardMetrics.cs
  class DashboardMetrics (line 26) | public static class DashboardMetrics
    method DashboardMetrics (line 30) | static DashboardMetrics()
    method AddMetric (line 46) | public static void AddMetric([NotNull] DashboardMetric metric)
    method GetMetrics (line 56) | public static IEnumerable<DashboardMetric> GetMetrics()

FILE: src/Hangfire.Core/Dashboard/DashboardRequest.cs
  class DashboardRequest (line 30) | public abstract class DashboardRequest
    method GetQuery (line 65) | public abstract string GetQuery(string key);
    method GetFormValuesAsync (line 72) | public abstract Task<IList<string>> GetFormValuesAsync(string key);

FILE: src/Hangfire.Core/Dashboard/DashboardResponse.cs
  class DashboardResponse (line 31) | public abstract class DashboardResponse
    method SetExpire (line 56) | public abstract void SetExpire(DateTimeOffset? value);
    method WriteAsync (line 63) | public abstract Task WriteAsync(string text);

FILE: src/Hangfire.Core/Dashboard/DashboardRoutes.cs
  class DashboardRoutes (line 38) | public static class DashboardRoutes
    method DashboardRoutes (line 48) | static DashboardRoutes()
    method AddStylesheet (line 211) | public static void AddStylesheet([NotNull] Assembly assembly, [NotNull...
    method AddStylesheetDarkMode (line 234) | public static void AddStylesheetDarkMode([NotNull] Assembly assembly, ...
    method AddJavaScript (line 256) | public static void AddJavaScript([NotNull] Assembly assembly, [NotNull...
    method GetContentFolderNamespace (line 268) | internal static string GetContentFolderNamespace(string contentFolder)
    method GetContentResourceName (line 273) | internal static string GetContentResourceName(string contentFolder, st...
    method CreateDeletedState (line 278) | private static DeletedState CreateDeletedState()
    method CreateEnqueuedState (line 283) | private static EnqueuedState CreateEnqueuedState()

FILE: src/Hangfire.Core/Dashboard/EmbeddedResourceDispatcher.cs
  class EmbeddedResourceDispatcher (line 23) | internal class EmbeddedResourceDispatcher : IDashboardDispatcher
    method EmbeddedResourceDispatcher (line 29) | public EmbeddedResourceDispatcher(
    method Dispatch (line 41) | public async Task Dispatch(DashboardContext context)
    method WriteResponse (line 49) | protected virtual Task WriteResponse(DashboardResponse response)
    method WriteResource (line 54) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA182...

FILE: src/Hangfire.Core/Dashboard/HtmlHelper.cs
  class HtmlHelper (line 33) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1822:...
    method HtmlHelper (line 41) | static HtmlHelper()
    method HtmlHelper (line 63) | public HtmlHelper([NotNull] RazorPage page)
    method Breadcrumbs (line 71) | public NonEscapedString Breadcrumbs(string title, [NotNull] IDictionar...
    method JobsSidebar (line 77) | public NonEscapedString JobsSidebar()
    method SidebarMenu (line 82) | public NonEscapedString SidebarMenu([NotNull] IEnumerable<Func<RazorPa...
    method BlockMetric (line 88) | public NonEscapedString BlockMetric([NotNull] DashboardMetric metric)
    method InlineMetric (line 94) | public NonEscapedString InlineMetric([NotNull] DashboardMetric metric)
    method Paginator (line 100) | public NonEscapedString Paginator([NotNull] Pager pager)
    method PerPageSelector (line 106) | public NonEscapedString PerPageSelector([NotNull] Pager pager)
    method RenderPartial (line 112) | public NonEscapedString RenderPartial(RazorPage partialPage)
    method Raw (line 118) | public NonEscapedString Raw(string value)
    method JobId (line 123) | public NonEscapedString JobId(string jobId, bool shorten = true)
    method JobName (line 131) | public string JobName(Job job)
    method JobName (line 136) | public string JobName(Job job, bool includeQueue)
    method StateLabel (line 191) | public NonEscapedString StateLabel(string stateName)
    method StateLabel (line 196) | public NonEscapedString StateLabel(string stateName, string text, bool...
    method JobIdLink (line 215) | public NonEscapedString JobIdLink(string jobId)
    method JobNameLink (line 220) | public NonEscapedString JobNameLink(string jobId, Job job)
    method JobNameLink (line 225) | public NonEscapedString JobNameLink(string jobId, Job job, bool includ...
    method RelativeTime (line 230) | public NonEscapedString RelativeTime(DateTime value)
    method MomentTitle (line 235) | public NonEscapedString MomentTitle(DateTime time, string value)
    method LocalTime (line 240) | public NonEscapedString LocalTime(DateTime value)
    method ToHumanDuration (line 245) | public string ToHumanDuration(TimeSpan? duration, bool displaySign = t...
    method FormatProperties (line 303) | [Obsolete("This method is unused and will be removed in 2.0.0.")]
    method QueueLabel (line 309) | public NonEscapedString QueueLabel(string queue)
    method ServerId (line 318) | public NonEscapedString ServerId(string serverId)
    method StackTrace (line 341) | public NonEscapedString StackTrace(string stackTrace)
    method HtmlEncode (line 353) | public string HtmlEncode(string text)

FILE: src/Hangfire.Core/Dashboard/IDashboardAsyncAuthorizationFilter.cs
  type IDashboardAsyncAuthorizationFilter (line 21) | public interface IDashboardAsyncAuthorizationFilter
    method AuthorizeAsync (line 23) | Task<bool> AuthorizeAsync([NotNull] DashboardContext context);

FILE: src/Hangfire.Core/Dashboard/IDashboardAuthorizationFilter.cs
  type IDashboardAuthorizationFilter (line 20) | public interface IDashboardAuthorizationFilter
    method Authorize (line 22) | bool Authorize([NotNull] DashboardContext context);

FILE: src/Hangfire.Core/Dashboard/IDashboardDispatcher.cs
  type IDashboardDispatcher (line 34) | public interface IDashboardDispatcher
    method Dispatch (line 41) | Task Dispatch([NotNull] DashboardContext context);

FILE: src/Hangfire.Core/Dashboard/JobDetailsRenderer.cs
  class JobDetailsRendererDto (line 24) | public sealed class JobDetailsRendererDto
    method JobDetailsRendererDto (line 26) | public JobDetailsRendererDto([NotNull] RazorPage page, [NotNull] strin...
  class JobDetailsRenderer (line 38) | internal static class JobDetailsRenderer
    method GetRenderers (line 44) | public static IEnumerable<Tuple<int, Func<JobDetailsRendererDto, NonEs...
    method AddRenderer (line 52) | public static void AddRenderer(int order, Func<JobDetailsRendererDto, ...

FILE: src/Hangfire.Core/Dashboard/JobHistoryRenderer.cs
  class JobHistoryRenderer (line 25) | public static class JobHistoryRenderer
    method JobHistoryRenderer (line 37) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performanc...
    method AddBackgroundStateColor (line 73) | [Obsolete("Use `AddStateCssSuffix` method's logic instead. Will be rem...
    method GetBackgroundStateColor (line 79) | public static string GetBackgroundStateColor(string stateName)
    method AddForegroundStateColor (line 89) | [Obsolete("Use `AddStateCssSuffix` method's logic instead. Will be rem...
    method GetForegroundStateColor (line 95) | public static string GetForegroundStateColor(string stateName)
    method AddStateCssSuffix (line 105) | public static void AddStateCssSuffix(string stateName, string color)
    method GetStateCssSuffix (line 110) | public static string GetStateCssSuffix(string stateName)
    method Register (line 120) | public static void Register(string state, Func<HtmlHelper, IDictionary...
    method Exists (line 132) | public static bool Exists(string state)
    method RenderHistory (line 137) | public static NonEscapedString RenderHistory(
    method NullRenderer (line 148) | public static NonEscapedString NullRenderer(HtmlHelper helper, IDictio...
    method DefaultRenderer (line 153) | public static NonEscapedString DefaultRenderer(HtmlHelper helper, IDic...
    method SucceededRenderer (line 171) | public static NonEscapedString SucceededRenderer(HtmlHelper html, IDic...
    method FailedRenderer (line 211) | private static NonEscapedString FailedRenderer(HtmlHelper html, IDicti...
    method ProcessingRenderer (line 228) | private static NonEscapedString ProcessingRenderer(HtmlHelper helper, ...
    method EnqueuedRenderer (line 260) | private static NonEscapedString EnqueuedRenderer(HtmlHelper helper, ID...
    method ScheduledRenderer (line 271) | private static NonEscapedString ScheduledRenderer(HtmlHelper helper, I...
    method AwaitingRenderer (line 290) | private static NonEscapedString AwaitingRenderer(HtmlHelper helper, ID...
    method DeletedRenderer (line 323) | private static NonEscapedString DeletedRenderer(HtmlHelper html, IDict...

FILE: src/Hangfire.Core/Dashboard/JobMethodCallRenderer.cs
  class JobMethodCallRenderer (line 32) | internal static class JobMethodCallRenderer
    method Render (line 37) | public static NonEscapedString Render(Job job)
    method WrapIdentifier (line 207) | private static string WrapIdentifier(string value)
    method WrapKeyword (line 212) | private static string WrapKeyword(string value)
    method WrapType (line 217) | private static string WrapType(string value)
    method WrapString (line 222) | private static string WrapString(string value)
    method Span (line 227) | private static string Span(string @class, string value)
    method Encode (line 232) | private static string Encode(string value)
    method GetIEnumerableGenericArgument (line 237) | private static Type GetIEnumerableGenericArgument(Type type)
    method GetNameWithoutGenericArity (line 248) | public static string GetNameWithoutGenericArity(Type t)
    class ArgumentRenderer (line 255) | private sealed class ArgumentRenderer
      method ArgumentRenderer (line 261) | private ArgumentRenderer()
      method Render (line 267) | public string Render(bool isJson, string deserializedValue, string r...
      method GetRenderer (line 311) | public static ArgumentRenderer GetRenderer(Type type)
      method IsNumericType (line 380) | private static bool IsNumericType(Type type)
      method IsNullableType (line 409) | private static bool IsNullableType(Type type)
  type TypeCode (line 416) | internal enum TypeCode
  class TypeExtensionMethods (line 438) | internal static class TypeExtensionMethods
    method GetTypeCode (line 440) | public static TypeCode GetTypeCode(this Type type)

FILE: src/Hangfire.Core/Dashboard/JobsSidebarMenu.cs
  class JobsSidebarMenu (line 22) | public static class JobsSidebarMenu
    method JobsSidebarMenu (line 27) | static JobsSidebarMenu()

FILE: src/Hangfire.Core/Dashboard/JsonStats.cs
  class JsonStats (line 25) | internal sealed class JsonStats : IDashboardDispatcher
    method Dispatch (line 27) | public async Task Dispatch(DashboardContext context)
    class StubPage (line 53) | private sealed class StubPage : RazorPage
      method Execute (line 55) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/LocalRequestsOnlyAuthorizationFilter.cs
  class LocalRequestsOnlyAuthorizationFilter (line 22) | public class LocalRequestsOnlyAuthorizationFilter : IDashboardAuthorizat...
    method Authorize (line 29) | public bool Authorize(DashboardContext context)
    method Authorize (line 48) | public bool Authorize(IDictionary<string, object> owinEnvironment)

FILE: src/Hangfire.Core/Dashboard/MenuItem.cs
  class MenuItem (line 21) | public class MenuItem
    method MenuItem (line 23) | public MenuItem(string text, string url)
    method GetAllMetrics (line 36) | public IEnumerable<DashboardMetric> GetAllMetrics()

FILE: src/Hangfire.Core/Dashboard/Metric.cs
  class Metric (line 20) | public class Metric
    method Metric (line 22) | public Metric(string value)
    method Metric (line 27) | public Metric(long value)
  type MetricStyle (line 40) | public enum MetricStyle
  class MetricStyleExtensions (line 49) | internal static class MetricStyleExtensions
    method ToClassName (line 51) | public static string ToClassName(this MetricStyle style)

FILE: src/Hangfire.Core/Dashboard/NavigationMenu.cs
  class NavigationMenu (line 22) | public static class NavigationMenu
    method NavigationMenu (line 26) | static NavigationMenu()

FILE: src/Hangfire.Core/Dashboard/NonEscapedString.cs
  class NonEscapedString (line 18) | public class NonEscapedString
    method NonEscapedString (line 22) | public NonEscapedString(string value)
    method ToString (line 27) | public override string ToString()

FILE: src/Hangfire.Core/Dashboard/Owin/IOwinDashboardAntiforgery.cs
  type IOwinDashboardAntiforgery (line 20) | public interface IOwinDashboardAntiforgery
    method GetToken (line 23) | string GetToken(IDictionary<string, object> environment);
    method ValidateRequest (line 24) | bool ValidateRequest(IDictionary<string, object> environment);

FILE: src/Hangfire.Core/Dashboard/Owin/MiddlewareExtensions.cs
  class MiddlewareExtensions (line 40) | [EditorBrowsable(EditorBrowsableState.Never)]
    method UseHangfireDashboard (line 43) | public static BuildFunc UseHangfireDashboard(
    method UseHangfireDashboard (line 60) | public static MidFunc UseHangfireDashboard(
    method GetUnauthorizedStatusCode (line 135) | private static int GetUnauthorizedStatusCode(IOwinContext owinContext)

FILE: src/Hangfire.Core/Dashboard/Owin/OwinDashboardContext.cs
  class OwinDashboardContext (line 22) | public sealed class OwinDashboardContext : DashboardContext
    method OwinDashboardContext (line 24) | public OwinDashboardContext(

FILE: src/Hangfire.Core/Dashboard/Owin/OwinDashboardContextExtensions.cs
  class OwinDashboardContextExtensions (line 22) | public static class OwinDashboardContextExtensions
    method GetOwinEnvironment (line 24) | public static IDictionary<string, object> GetOwinEnvironment([NotNull]...

FILE: src/Hangfire.Core/Dashboard/Owin/OwinDashboardRequest.cs
  class OwinDashboardRequest (line 24) | internal sealed class OwinDashboardRequest : DashboardRequest
    method OwinDashboardRequest (line 29) | public OwinDashboardRequest([NotNull] IDictionary<string, object> envi...
    method GetQuery (line 41) | public override string GetQuery(string key) => _context.Request.Query[...
    method GetFormValuesAsync (line 43) | public override async Task<IList<string>> GetFormValuesAsync(string key)

FILE: src/Hangfire.Core/Dashboard/Owin/OwinDashboardResponse.cs
  class OwinDashboardResponse (line 25) | internal sealed class OwinDashboardResponse : DashboardResponse
    method OwinDashboardResponse (line 29) | public OwinDashboardResponse([NotNull] IDictionary<string, object> env...
    method SetExpire (line 49) | public override void SetExpire(DateTimeOffset? value)
    method WriteAsync (line 54) | public override Task WriteAsync(string text)

FILE: src/Hangfire.Core/Dashboard/Pager.cs
  class Pager (line 21) | public class Pager
    method Pager (line 29) | public Pager(int from, int perPage, long total)
    method Pager (line 34) | public Pager(int from, int perPage, int defaultPerPage, long total)
    method PageUrl (line 56) | public virtual string PageUrl(int page)
    method RecordsPerPageUrl (line 63) | public string RecordsPerPageUrl(int perPage)
    method GenerateItems (line 69) | private ICollection<Item> GenerateItems()
    method AddPrevious (line 111) | private void AddPrevious(ICollection<Item> results)
    method AddMoreBefore (line 117) | private void AddMoreBefore(ICollection<Item> results)
    method AddMoreAfter (line 127) | private void AddMoreAfter(ICollection<Item> results)
    method AddPageNumbers (line 138) | private void AddPageNumbers(ICollection<Item> results)
    method AddNext (line 147) | private void AddNext(ICollection<Item> results)
    class Item (line 153) | internal sealed class Item
      method Item (line 155) | public Item(int pageIndex, bool disabled, ItemType type)
    type ItemType (line 167) | internal enum ItemType

FILE: src/Hangfire.Core/Dashboard/Pages/AwaitingJobsPage.cshtml.cs
  class AwaitingJobsPage (line 77) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 82) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/DeletedJobsPage.cshtml.cs
  class DeletedJobsPage (line 43) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 48) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/EnqueuedJobsPage.cs
  class EnqueuedJobsPage (line 3) | partial class EnqueuedJobsPage
    method EnqueuedJobsPage (line 5) | public EnqueuedJobsPage(string queue)

FILE: src/Hangfire.Core/Dashboard/Pages/EnqueuedJobsPage.cshtml.cs
  class EnqueuedJobsPage (line 54) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 59) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/FailedJobsPage.cshtml.cs
  class FailedJobsPage (line 48) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 53) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/FetchedJobsPage.cs
  class FetchedJobsPage (line 3) | partial class FetchedJobsPage
    method FetchedJobsPage (line 5) | public FetchedJobsPage(string queue)

FILE: src/Hangfire.Core/Dashboard/Pages/FetchedJobsPage.cshtml.cs
  class FetchedJobsPage (line 54) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 59) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/HomePage.cs
  class HomePage (line 5) | partial class HomePage

FILE: src/Hangfire.Core/Dashboard/Pages/HomePage.cshtml.cs
  class HomePage (line 59) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 64) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/JobDetailsPage.cs
  class JobDetailsPage (line 5) | partial class JobDetailsPage
    method JobDetailsPage (line 7) | public JobDetailsPage(string jobId)

FILE: src/Hangfire.Core/Dashboard/Pages/JobDetailsPage.cshtml.cs
  class JobDetailsPage (line 82) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 87) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/LayoutPage.cs
  class LayoutPage (line 3) | partial class LayoutPage
    method LayoutPage (line 5) | public LayoutPage(string title)

FILE: src/Hangfire.Core/Dashboard/Pages/LayoutPage.cshtml.cs
  class LayoutPage (line 54) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 59) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/ProcessingJobsPage.cshtml.cs
  class ProcessingJobsPage (line 53) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 58) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/QueuesPage.cshtml.cs
  class QueuesPage (line 42) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 47) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/RecurringJobsPage.cshtml.cs
  class RecurringJobsPage (line 65) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 70) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/RetriesPage.cshtml.cs
  class RetriesPage (line 65) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 70) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/ScheduledJobsPage.cshtml.cs
  class ScheduledJobsPage (line 43) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 48) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/ServersPage.cshtml.cs
  class ServersPage (line 53) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 58) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/SucceededJobs.cshtml.cs
  class SucceededJobs (line 48) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 53) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_BlockMetric.cs
  class BlockMetric (line 3) | partial class BlockMetric
    method BlockMetric (line 5) | public BlockMetric(DashboardMetric dashboardMetric)

FILE: src/Hangfire.Core/Dashboard/Pages/_BlockMetric.cshtml.cs
  class BlockMetric (line 31) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 36) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_Breadcrumbs.cs
  class Breadcrumbs (line 5) | partial class Breadcrumbs
    method Breadcrumbs (line 7) | public Breadcrumbs(string title, IDictionary<string, string> items)

FILE: src/Hangfire.Core/Dashboard/Pages/_Breadcrumbs.cshtml.cs
  class Breadcrumbs (line 25) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 30) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_ErrorAlert.cshtml.cs
  class ErrorAlert (line 25) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 30) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_InlineMetric.cs
  class InlineMetric (line 3) | partial class InlineMetric
    method InlineMetric (line 5) | public InlineMetric(DashboardMetric dashboardMetric)

FILE: src/Hangfire.Core/Dashboard/Pages/_InlineMetric.cshtml.cs
  class InlineMetric (line 25) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 30) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_Navigation.cshtml.cs
  class Navigation (line 25) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 30) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_Paginator.cs
  class Paginator (line 3) | partial class Paginator
    method Paginator (line 7) | public Paginator(Pager pager)

FILE: src/Hangfire.Core/Dashboard/Pages/_Paginator.cshtml.cs
  class Paginator (line 31) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 36) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_PerPageSelector.cs
  class PerPageSelector (line 3) | partial class PerPageSelector
    method PerPageSelector (line 7) | public PerPageSelector(Pager pager)

FILE: src/Hangfire.Core/Dashboard/Pages/_PerPageSelector.cshtml.cs
  class PerPageSelector (line 25) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 30) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/Pages/_SidebarMenu.cs
  class SidebarMenu (line 22) | partial class SidebarMenu
    method SidebarMenu (line 24) | public SidebarMenu([NotNull] IEnumerable<Func<RazorPage, MenuItem>> it...

FILE: src/Hangfire.Core/Dashboard/Pages/_SidebarMenu.cshtml.cs
  class SidebarMenu (line 25) | [System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0...
    method Execute (line 30) | public override void Execute()

FILE: src/Hangfire.Core/Dashboard/RazorPage.cs
  class RazorPage (line 25) | public abstract class RazorPage
    method RazorPage (line 33) | protected RazorPage()
    method Execute (line 94) | public abstract void Execute();
    method Query (line 96) | public string Query(string key)
    method ToString (line 101) | public override string ToString()
    method Assign (line 107) | public void Assign(RazorPage parentPage)
    method Assign (line 117) | internal void Assign(DashboardContext context)
    method WriteLiteral (line 154) | protected void WriteLiteral(string textToAppend)
    method Write (line 162) | protected virtual void Write(object value)
    method RenderBody (line 170) | protected virtual object RenderBody()
    method TransformText (line 175) | private string TransformText(string body)
    method Encode (line 190) | private static string Encode(string text)

FILE: src/Hangfire.Core/Dashboard/RazorPageDispatcher.cs
  class RazorPageDispatcher (line 22) | internal sealed class RazorPageDispatcher : IDashboardDispatcher
    method RazorPageDispatcher (line 26) | public RazorPageDispatcher(Func<Match, RazorPage> pageFunc)
    method Dispatch (line 31) | public Task Dispatch(DashboardContext context)

FILE: src/Hangfire.Core/Dashboard/RouteCollection.cs
  class RouteCollection (line 23) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1711:Ident...
    method Add (line 30) | [Obsolete("Use the Add(string, IDashboardDispatcher) overload instead....
    method Add (line 40) | public void Add([NotNull] string pathTemplate, [NotNull] IDashboardDis...
    method FindDispatcher (line 48) | public Tuple<IDashboardDispatcher, Match> FindDispatcher(string path)

FILE: src/Hangfire.Core/Dashboard/RouteCollectionExtensions.cs
  class RouteCollectionExtensions (line 23) | public static class RouteCollectionExtensions
    method AddRazorPage (line 25) | public static void AddRazorPage(
    method AddCommand (line 38) | [Obsolete("Use the AddCommand(RouteCollection, string, Func<DashboardC...
    method AddCommand (line 52) | public static void AddCommand(
    method AddBatchCommand (line 65) | [Obsolete("Use the AddBatchCommand(RouteCollection, string, Func<Dashb...
    method AddBatchCommand (line 79) | public static void AddBatchCommand(
    method AddClientBatchCommand (line 91) | public static void AddClientBatchCommand(
    method AddRecurringBatchCommand (line 105) | public static void AddRecurringBatchCommand(
    method AddRecurringBatchCommand (line 119) | [EditorBrowsable(EditorBrowsableState.Never)]

FILE: src/Hangfire.Core/Dashboard/UrlHelper.cs
  class UrlHelper (line 22) | public class UrlHelper
    method UrlHelper (line 27) | [Obsolete("Please use UrlHelper(DashboardContext) instead. Will be rem...
    method UrlHelper (line 37) | public UrlHelper([NotNull] DashboardContext context)
    method To (line 43) | public string To(string relativePath)
    method Home (line 54) | public string Home()
    method JobDetails (line 59) | public string JobDetails(string jobId)
    method LinkToQueues (line 64) | public string LinkToQueues()
    method Queue (line 69) | public string Queue(string queue)

FILE: src/Hangfire.Core/DashboardOptions.cs
  class DashboardOptions (line 23) | public class DashboardOptions
    method DashboardOptions (line 30) | public DashboardOptions()

FILE: src/Hangfire.Core/DisableConcurrentExecutionAttribute.cs
  class DisableConcurrentExecutionAttribute (line 26) | public class DisableConcurrentExecutionAttribute : JobFilterAttribute, I...
    method DisableConcurrentExecutionAttribute (line 28) | public DisableConcurrentExecutionAttribute(int timeoutInSeconds)
    method DisableConcurrentExecutionAttribute (line 35) | [JsonConstructor]
    method OnPerforming (line 46) | public void OnPerforming(PerformingContext context)
    method OnPerformed (line 55) | public void OnPerformed(PerformedContext context)
    method GetResource (line 66) | private string GetResource(Job job)

FILE: src/Hangfire.Core/ExceptionInfo.cs
  class ExceptionInfo (line 25) | public sealed class ExceptionInfo
    method ExceptionInfo (line 27) | public ExceptionInfo([NotNull] Exception exception)
    method ExceptionInfo (line 40) | [JsonConstructor]
    method ToString (line 60) | public override string ToString()

FILE: src/Hangfire.Core/ExceptionTypeHelper.cs
  class ExceptionTypeHelper (line 20) | internal static class ExceptionTypeHelper
    method IsCatchableExceptionType (line 27) | internal static bool IsCatchableExceptionType(this Exception e)

FILE: src/Hangfire.Core/FromParameterAttribute.cs
  class FromParameterAttribute (line 20) | [AttributeUsage(AttributeTargets.Parameter)]
    method FromParameterAttribute (line 23) | public FromParameterAttribute(string parameterName)

FILE: src/Hangfire.Core/FromResultAttribute.cs
  class FromResultAttribute (line 20) | [AttributeUsage(AttributeTargets.Parameter)]
    method FromResultAttribute (line 23) | public FromResultAttribute() : base("AntecedentResult")
  class FromExceptionAttribute (line 28) | [AttributeUsage(AttributeTargets.Parameter)]
    method FromExceptionAttribute (line 31) | public FromExceptionAttribute() : base("AntecedentException")

FILE: src/Hangfire.Core/GlobalConfiguration.cs
  type CompatibilityLevel (line 25) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1707:Ident...
  class GlobalConfiguration (line 33) | public class GlobalConfiguration : IGlobalConfiguration
    method HasCompatibilityLevel (line 45) | internal static bool HasCompatibilityLevel(CompatibilityLevel level)
    method GlobalConfiguration (line 50) | internal GlobalConfiguration()
  class CompatibilityLevelExtensions (line 55) | public static class CompatibilityLevelExtensions
    method SetDataCompatibilityLevel (line 57) | public static IGlobalConfiguration SetDataCompatibilityLevel(

FILE: src/Hangfire.Core/GlobalConfigurationExtensions.cs
  class GlobalConfigurationExtensions (line 30) | [EditorBrowsable(EditorBrowsableState.Never)]
    method UseStorage (line 33) | public static IGlobalConfiguration<TStorage> UseStorage<TStorage>(
    method WithJobExpirationTimeout (line 44) | public static IGlobalConfiguration<TStorage> WithJobExpirationTimeout<...
    method UseActivator (line 55) | public static IGlobalConfiguration<TActivator> UseActivator<TActivator>(
    method UseDefaultActivator (line 66) | public static IGlobalConfiguration<JobActivator> UseDefaultActivator(
    method UseLogProvider (line 74) | public static IGlobalConfiguration<TLogProvider> UseLogProvider<TLogPr...
    method UseNoOpLogProvider (line 90) | public static IGlobalConfiguration<ILogProvider> UseNoOpLogProvider(
    method UseNLogLogProvider (line 97) | public static IGlobalConfiguration<NLogLogProvider> UseNLogLogProvider(
    method UseColouredConsoleLogProvider (line 105) | public static IGlobalConfiguration<ColouredConsoleLogProvider> UseColo...
    method UseColouredConsoleLogProvider (line 113) | public static IGlobalConfiguration<ColouredConsoleLogProvider> UseColo...
    method UseLog4NetLogProvider (line 122) | public static IGlobalConfiguration<Log4NetLogProvider> UseLog4NetLogPr...
    method UseElmahLogProvider (line 131) | public static IGlobalConfiguration<ElmahLogProvider> UseElmahLogProvider(
    method UseElmahLogProvider (line 139) | public static IGlobalConfiguration<ElmahLogProvider> UseElmahLogProvider(
    method UseEntLibLogProvider (line 150) | public static IGlobalConfiguration<EntLibLogProvider> UseEntLibLogProv...
    method UseSerilogLogProvider (line 159) | public static IGlobalConfiguration<SerilogLogProvider> UseSerilogLogPr...
    method UseLoupeLogProvider (line 168) | public static IGlobalConfiguration<LoupeLogProvider> UseLoupeLogProvider(
    method UseFilter (line 177) | public static IGlobalConfiguration<TFilter> UseFilter<TFilter>(
    method UseFilterProvider (line 187) | public static IGlobalConfiguration<TFilterProvider> UseFilterProvider<...
    method UseDashboardMetric (line 198) | public static IGlobalConfiguration UseDashboardMetric(
    method UseDashboardMetrics (line 211) | public static IGlobalConfiguration UseDashboardMetrics(
    method UseJobDetailsRenderer (line 227) | public static IGlobalConfiguration UseJobDetailsRenderer(
    method UseTypeResolver (line 240) | public static IGlobalConfiguration UseTypeResolver(
    method UseTypeSerializer (line 250) | public static IGlobalConfiguration UseTypeSerializer(
    method UseDefaultTypeResolver (line 260) | public static IGlobalConfiguration UseDefaultTypeResolver(
    method UseDefaultTypeSerializer (line 267) | public static IGlobalConfiguration UseDefaultTypeSerializer(
    method UseSimpleAssemblyNameTypeSerializer (line 274) | public static IGlobalConfiguration UseSimpleAssemblyNameTypeSerializer(
    method UseIgnoredAssemblyVersionTypeResolver (line 281) | public static IGlobalConfiguration UseIgnoredAssemblyVersionTypeResolver(
    method UseSerializerSettings (line 293) | public static IGlobalConfiguration UseSerializerSettings(
    method UseRecommendedSerializerSettings (line 303) | public static IGlobalConfiguration UseRecommendedSerializerSettings(
    method UseRecommendedSerializerSettings (line 309) | public static IGlobalConfiguration UseRecommendedSerializerSettings(
    method UseResultsInContinuations (line 322) | public static IGlobalConfiguration UseResultsInContinuations(this IGlo...
    method UseMaxLinesInExceptionDetails (line 329) | public static IGlobalConfiguration UseMaxLinesInExceptionDetails(
    method UseMaxArgumentSizeToRender (line 340) | public static IGlobalConfiguration UseMaxArgumentSizeToRender(
    method UseDefaultCulture (line 351) | public static IGlobalConfiguration UseDefaultCulture(
    method UseDefaultCulture (line 359) | public static IGlobalConfiguration UseDefaultCulture(
    method UseDefaultCulture (line 368) | public static IGlobalConfiguration UseDefaultCulture(
    method UseDefaultCulture (line 377) | public static IGlobalConfiguration UseDefaultCulture(
    method UseDashboardStylesheet (line 387) | public static IGlobalConfiguration UseDashboardStylesheet(
    method UseDashboardStylesheetDarkMode (line 400) | public static IGlobalConfiguration UseDashboardStylesheetDarkMode(
    method UseDashboardJavaScript (line 413) | public static IGlobalConfiguration UseDashboardJavaScript(
    method Use (line 426) | [EditorBrowsable(EditorBrowsableState.Never)]
    class ConfigurationEntry (line 438) | private sealed class ConfigurationEntry<T> : IGlobalConfiguration<T>
      method ConfigurationEntry (line 440) | public ConfigurationEntry(T entry)

FILE: src/Hangfire.Core/GlobalJobFilters.cs
  class GlobalJobFilters (line 23) | public static class GlobalJobFilters
    method GlobalJobFilters (line 25) | static GlobalJobFilters()

FILE: src/Hangfire.Core/GlobalStateHandlers.cs
  class GlobalStateHandlers (line 21) | public static class GlobalStateHandlers
    method GlobalStateHandlers (line 23) | static GlobalStateHandlers()

FILE: src/Hangfire.Core/IBackgroundJobClient.cs
  type IBackgroundJobClientV2 (line 29) | public interface IBackgroundJobClientV2 : IBackgroundJobClient
    method Create (line 50) | [CanBeNull]
  type IBackgroundJobClient (line 62) | public interface IBackgroundJobClient
    method Create (line 93) | [CanBeNull]
    method ChangeState (line 125) | bool ChangeState([NotNull] string jobId, [NotNull] IState state, [CanB...

FILE: src/Hangfire.Core/IGlobalConfiguration.cs
  type IGlobalConfiguration (line 20) | [EditorBrowsable(EditorBrowsableState.Never)]
  type IGlobalConfiguration (line 27) | [EditorBrowsable(EditorBrowsableState.Never)]

FILE: src/Hangfire.Core/IJobCancellationToken.cs
  type IJobCancellationToken (line 20) | public interface IJobCancellationToken
    method ThrowIfCancellationRequested (line 36) | void ThrowIfCancellationRequested();

FILE: src/Hangfire.Core/IRecurringJobManager.cs
  type IRecurringJobManagerV2 (line 21) | public interface IRecurringJobManagerV2 : IRecurringJobManager
    method TriggerJob (line 26) | [CanBeNull]
  type IRecurringJobManager (line 30) | public interface IRecurringJobManager
    method AddOrUpdate (line 32) | void AddOrUpdate(
    method Trigger (line 38) | void Trigger([NotNull] string recurringJobId);
    method RemoveIfExists (line 39) | void RemoveIfExists([NotNull] string recurringJobId);

FILE: src/Hangfire.Core/ITimeZoneResolver.cs
  class DefaultTimeZoneResolver (line 21) | public sealed class DefaultTimeZoneResolver : ITimeZoneResolver
    method GetTimeZoneById (line 23) | public TimeZoneInfo GetTimeZoneById(string timeZoneId)
  type ITimeZoneResolver (line 29) | public interface ITimeZoneResolver
    method GetTimeZoneById (line 31) | [NotNull]

FILE: src/Hangfire.Core/IdempotentCompletionAttribute.cs
  class IdempotentCompletionAttribute (line 22) | public class IdempotentCompletionAttribute : JobFilterAttribute, IElectS...
    method IdempotentCompletionAttribute (line 24) | public IdempotentCompletionAttribute()
    method OnStateElection (line 29) | public void OnStateElection(ElectStateContext context)

FILE: src/Hangfire.Core/JobActivator.cs
  class JobActivator (line 23) | public class JobActivator
    method ActivateJob (line 46) | public virtual object ActivateJob(Type jobType)
    method BeginScope (line 51) | [Obsolete("Please implement/use the BeginScope(JobActivatorContext) me...
    method BeginScope (line 57) | public virtual JobActivatorScope BeginScope(JobActivatorContext context)
    method BeginScope (line 64) | public virtual JobActivatorScope BeginScope(PerformContext context)
    class SimpleJobActivatorScope (line 69) | class SimpleJobActivatorScope : JobActivatorScope
      method SimpleJobActivatorScope (line 74) | public SimpleJobActivatorScope([NotNull] JobActivator activator)
      method Resolve (line 80) | public override object Resolve(Type type)
      method DisposeScope (line 93) | public override void DisposeScope()

FILE: src/Hangfire.Core/JobActivatorContext.cs
  class JobActivatorContext (line 23) | public class JobActivatorContext
    method JobActivatorContext (line 25) | public JobActivatorContext(
    method SetJobParameter (line 48) | public void SetJobParameter([NotNull] string name, object value)
    method GetJobParameter (line 55) | public T GetJobParameter<T>([NotNull] string name) => GetJobParameter<...
    method GetJobParameter (line 57) | public T GetJobParameter<T>([NotNull] string name, bool allowStale)

FILE: src/Hangfire.Core/JobActivatorScope.cs
  class JobActivatorScope (line 21) | public abstract class JobActivatorScope : IDisposable
    method JobActivatorScope (line 27) | protected JobActivatorScope()
    method Resolve (line 37) | public abstract object Resolve(Type type);
    method DisposeScope (line 39) | public virtual void DisposeScope()
    method Dispose (line 43) | public void Dispose()

FILE: src/Hangfire.Core/JobCancellationToken.cs
  class JobCancellationToken (line 20) | public class JobCancellationToken : IJobCancellationToken
    method JobCancellationToken (line 24) | public JobCancellationToken(bool canceled)
    method ThrowIfCancellationRequested (line 35) | public void ThrowIfCancellationRequested()

FILE: src/Hangfire.Core/JobCancellationTokenExtensions.cs
  class JobCancellationTokenExtensions (line 20) | internal static class JobCancellationTokenExtensions
    method IsAborted (line 22) | public static bool IsAborted(this IJobCancellationToken jobCancellatio...

FILE: src/Hangfire.Core/JobContinuationOptions.cs
  type JobContinuationOptions (line 20) | [Flags]

FILE: src/Hangfire.Core/JobDisplayNameAttribute.cs
  class JobDisplayNameAttribute (line 30) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    method JobDisplayNameAttribute (line 36) | public JobDisplayNameAttribute(string displayName)
    method Format (line 54) | public virtual string Format(DashboardContext context, Job job)
    method InitResourceManager (line 74) | private static ResourceManager InitResourceManager(Type type)

FILE: src/Hangfire.Core/JobParameterInjectionFilter.cs
  class JobParameterInjectionFilter (line 24) | public class JobParameterInjectionFilter : IServerFilter
    method OnPerforming (line 28) | public void OnPerforming(PerformingContext context)
    method OnPerformed (line 66) | public void OnPerformed(PerformedContext context)

FILE: src/Hangfire.Core/JobStorage.cs
  class JobStorage (line 27) | public abstract class JobStorage
    method GetMonitoringApi (line 83) | public abstract IMonitoringApi GetMonitoringApi();
    method GetConnection (line 85) | public abstract IStorageConnection GetConnection();
    method GetReadOnlyConnection (line 87) | public virtual IStorageConnection GetReadOnlyConnection()
    method GetComponents (line 93) | [Obsolete($"Please use the `{nameof(GetStorageWideProcesses)}` and/or ...
    method GetServerRequiredProcesses (line 100) | public virtual IEnumerable<IBackgroundProcess> GetServerRequiredProces...
    method GetStorageWideProcesses (line 105) | public virtual IEnumerable<IBackgroundProcess> GetStorageWideProcesses()
    method GetStateHandlers (line 110) | public virtual IEnumerable<IStateHandler> GetStateHandlers()
    method WriteOptionsToLog (line 115) | public virtual void WriteOptionsToLog(ILog logger)
    method HasFeature (line 119) | public virtual bool HasFeature([NotNull] string featureId)

FILE: src/Hangfire.Core/LatencyTimeoutAttribute.cs
  class LatencyTimeoutAttribute (line 29) | public sealed class LatencyTimeoutAttribute : JobFilterAttribute, IElect...
    method LatencyTimeoutAttribute (line 43) | public LatencyTimeoutAttribute(int timeoutInSeconds)
    method OnStateElection (line 62) | public void OnStateElection(ElectStateContext context)

FILE: src/Hangfire.Core/MisfireHandlingMode.cs
  type MisfireHandlingMode (line 23) | public enum MisfireHandlingMode

FILE: src/Hangfire.Core/MoreLinq/MoreEnumerable.Pairwise.cs
  class MoreEnumerable (line 24) | static partial class MoreEnumerable
    method Pairwise (line 51) | public static IEnumerable<TResult> Pairwise<TSource, TResult>(this IEn...
    method PairwiseImpl (line 58) | private static IEnumerable<TResult> PairwiseImpl<TSource, TResult>(thi...

FILE: src/Hangfire.Core/Obsolete/BootstrapperConfigurationExtensions.cs
  class BootstrapperConfigurationExtensions (line 21) | [Obsolete("Please use `AppBuilderExtensions` class instead. Will be remo...
    method UseServer (line 30) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...
    method UseServer (line 43) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...
    method UseServer (line 63) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...
    method UseServer (line 85) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...
    method UseServer (line 107) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...
    method UseServer (line 122) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...
    method UseServer (line 141) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...

FILE: src/Hangfire.Core/Obsolete/CreateJobFailedException.cs
  class CreateJobFailedException (line 30) | public class CreateJobFailedException : Exception
    method CreateJobFailedException (line 39) | public CreateJobFailedException(string message, Exception inner)
    method CreateJobFailedException (line 51) | protected CreateJobFailedException(SerializationInfo info, StreamingCo...

FILE: src/Hangfire.Core/Obsolete/DashboardMiddleware.cs
  class DashboardMiddleware (line 28) | internal sealed class DashboardMiddleware : OwinMiddleware
    method DashboardMiddleware (line 36) | public DashboardMiddleware(
    method Invoke (line 56) | public override Task Invoke(IOwinContext owinContext)

FILE: src/Hangfire.Core/Obsolete/DashboardOwinExtensions.cs
  class DashboardOwinExtensions (line 26) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard` OWIN extension ...
    method MapHangfireDashboard (line 43) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard` OWIN extensio...
    method MapHangfireDashboard (line 56) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard` OWIN extensio...
    method MapHangfireDashboard (line 72) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard` OWIN extensio...
    method MapHangfireDashboard (line 90) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard` OWIN extensio...
    method MapHangfireDashboard (line 110) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard` OWIN extensio...

FILE: src/Hangfire.Core/Obsolete/IAuthorizationFilter.cs
  type IAuthorizationFilter (line 23) | [Obsolete("Please use `IDashboardAuthorizationFilter` instead. Will be r...
    method Authorize (line 26) | bool Authorize([NotNull] IDictionary<string, object> owinEnvironment);

FILE: src/Hangfire.Core/Obsolete/IBootstrapperConfiguration.cs
  type IBootstrapperConfiguration (line 26) | [Obsolete("Please use `GlobalConfiguration` class instead. Will be remov...
    method UseAuthorizationFilters (line 36) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard(\"/hangfire\",...
    method UseFilter (line 43) | [Obsolete("Please use `GlobalConfiguration.UseFilter` instead. Will be...
    method UseDashboardPath (line 51) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard(string pathMat...
    method UseAppPath (line 58) | [Obsolete("Please use `IAppBuilder.UseHangfireDashboard(\"/hangfire\",...
    method UseStorage (line 66) | [Obsolete("Please use `GlobalConfiguration.UseStorage` instead. Will b...
    method UseActivator (line 74) | [Obsolete("Please use `GlobalConfiguration.UseActivator` instead. Will...
    method UseServer (line 82) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...

FILE: src/Hangfire.Core/Obsolete/IRequestDispatcher.cs
  type IRequestDispatcher (line 22) | [Obsolete("Use the `IDashboardDispatcher` interface instead. Will be rem...
    method Dispatch (line 25) | Task Dispatch(RequestDispatcherContext context);

FILE: src/Hangfire.Core/Obsolete/IServerComponent.cs
  type IServerComponent (line 23) | [Obsolete("Please use the `IBackgroundProcess` interface where you can. ...
    method Execute (line 26) | void Execute(CancellationToken cancellationToken);

FILE: src/Hangfire.Core/Obsolete/IServerProcess.cs
  type IServerProcess (line 22) | [Obsolete("Please use the `IBackgroundProcess` interface where you can. ...

FILE: src/Hangfire.Core/Obsolete/Job.Obsolete.cs
  class Job (line 26) | partial class Job
    method Job (line 28) | [Obsolete("Please use Job(Type, MethodInfo, object[]) ctor overload in...
    method Perform (line 48) | [Obsolete("This method is deprecated. Please use `CoreBackgroundJobPer...
    method Activate (line 75) | [Obsolete("Will be removed in 2.0.0")]
    method GetArguments (line 97) | [Obsolete("Will be removed in 2.0.0")]
    method InvokeMethod (line 134) | [Obsolete("Will be removed in 2.0.0")]
    method Dispose (line 148) | [Obsolete("Will be removed in 2.0.0")]

FILE: src/Hangfire.Core/Obsolete/OwinBootstrapper.cs
  class OwinBootstrapper (line 25) | [Obsolete("Please use `GlobalConfiguration` class for configuration, or ...
    method UseHangfire (line 35) | [Obsolete("Please use `GlobalConfiguration` class for configuration, o...

FILE: src/Hangfire.Core/Obsolete/RequestDispatcherContext.cs
  class RequestDispatcherContext (line 24) | [Obsolete("Use the `DashboardContext` class instead. Will be removed in ...
    method RequestDispatcherContext (line 27) | public RequestDispatcherContext(
    method FromDashboardContext (line 51) | public static RequestDispatcherContext FromDashboardContext([NotNull] ...

FILE: src/Hangfire.Core/Obsolete/RequestDispatcherWrapper.cs
  class RequestDispatcherWrapper (line 23) | [Obsolete("Use IDashboardDispatcher-based dispatchers instead. Will be r...
    method RequestDispatcherWrapper (line 28) | public RequestDispatcherWrapper([NotNull] IRequestDispatcher dispatcher)
    method Dispatch (line 34) | public Task Dispatch(DashboardContext context)

FILE: src/Hangfire.Core/Obsolete/ServerOwinExtensions.cs
  class ServerOwinExtensions (line 26) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension met...
    method RunHangfireServer (line 40) | [Obsolete("Please use `IAppBuilder.UseHangfireServer` OWIN extension m...

FILE: src/Hangfire.Core/Obsolete/ServerWatchdogOptions.cs
  class ServerWatchdogOptions (line 22) | [Obsolete("Please use `BackgroundJobServerOptions` properties instead. W...
    method ServerWatchdogOptions (line 28) | public ServerWatchdogOptions()

FILE: src/Hangfire.Core/Obsolete/StartupConfiguration.cs
  class BootstrapperConfiguration (line 23) | [Obsolete]
    method BootstrapperConfiguration (line 26) | public BootstrapperConfiguration()
    method UseAuthorizationFilters (line 45) | public void UseAuthorizationFilters(params IAuthorizationFilter[] filt...
    method UseFilter (line 50) | public void UseFilter(object filter)
    method UseDashboardPath (line 55) | public void UseDashboardPath(string path)
    method UseAppPath (line 60) | public void UseAppPath(string path)
    method UseStorage (line 65) | public void UseStorage(JobStorage storage)
    method UseActivator (line 70) | public void UseActivator(JobActivator activator)
    method UseServer (line 75) | public void UseServer(Func<BackgroundJobServer> server)

FILE: src/Hangfire.Core/Obsolete/StateContext.cs
  class StateContext (line 24) | [Obsolete("This class is here for compatibility reasons. Will be removed...

FILE: src/Hangfire.Core/Processing/AppDomainUnloadMonitor.cs
  class AppDomainUnloadMonitor (line 22) | internal static class AppDomainUnloadMonitor
    method EnsureInitialized (line 27) | public static void EnsureInitialized()
    method OnDomainUnload (line 38) | private static void OnDomainUnload(object sender, EventArgs args)

FILE: src/Hangfire.Core/Processing/BackgroundDispatcher.cs
  class BackgroundDispatcher (line 30) | internal sealed class BackgroundDispatcher : IBackgroundDispatcher
    method BackgroundDispatcher (line 39) | public BackgroundDispatcher(
    method Wait (line 75) | public bool Wait(TimeSpan timeout)
    method WaitAsync (line 80) | public async Task WaitAsync(TimeSpan timeout, CancellationToken cancel...
    method Dispose (line 85) | public void Dispose()
    method ToString (line 91) | public override string ToString()
    method DispatchLoop (line 96) | private void DispatchLoop()

FILE: src/Hangfire.Core/Processing/BackgroundDispatcherAsync.cs
  class BackgroundDispatcherAsync (line 27) | internal sealed class BackgroundDispatcherAsync : IBackgroundDispatcher
    method BackgroundDispatcherAsync (line 39) | public BackgroundDispatcherAsync(
    method Wait (line 71) | public bool Wait(TimeSpan timeout)
    method WaitAsync (line 76) | public async Task WaitAsync(TimeSpan timeout, CancellationToken cancel...
    method Dispose (line 81) | public void Dispose()
    method ToString (line 92) | public override string ToString()
    method DispatchLoop (line 97) | private async Task DispatchLoop()

FILE: src/Hangfire.Core/Processing/BackgroundExecution.cs
  class BackgroundExecution (line 26) | internal sealed class BackgroundExecution : IBackgroundExecution
    method BackgroundExecution (line 53) | public BackgroundExecution([NotNull] BackgroundExecutionOptions option...
    method Run (line 71) | public void Run(Action<Guid, object> callback, object state)
    method RunAsync (line 158) | public async Task RunAsync(Func<Guid, object, Task> callback, object s...
    method Dispose (line 245) | public void Dispose()
    method NotifySucceeded (line 259) | public void NotifySucceeded()
    method ToString (line 272) | public override string ToString()
    method HandleStarted (line 277) | private void HandleStarted(Guid executionId, out TimeSpan initialDelay)
    method HandleDelay (line 288) | private bool HandleDelay(Guid executionId, TimeSpan delay)
    method HandleDelayAsync (line 310) | private async Task<bool> HandleDelayAsync(Guid executionId, TimeSpan d...
    method LogUnableWait (line 332) | private void LogUnableWait(Guid executionId, TimeSpan delay, Exception...
    method LogRetry (line 337) | private void LogRetry(Guid executionId, TimeSpan delay)
    method NormalizeDelay (line 342) | private void NormalizeDelay(ref TimeSpan retryDelay)
    method HandleSuccess (line 351) | private void HandleSuccess(out TimeSpan nextDelay)
    method HandleException (line 357) | private void HandleException(Guid executionId, Exception exception, ou...
    method HandleStop (line 408) | private void HandleStop(Guid executionId)
    method HandleThreadAbort (line 415) | private void HandleThreadAbort(Guid executionId, Exception exception)
    method ToRunningState (line 421) | private void ToRunningState()
    method ToFailedState (line 452) | private void ToFailedState(Exception exception, out TimeSpan retryDelay)
    method GetExecutionLoopTemplate (line 497) | private string GetExecutionLoopTemplate(Guid executionId)
    method GetExecutionTemplate (line 502) | private string GetExecutionTemplate()
    method SetStoppedAt (line 507) | private void SetStoppedAt()

FILE: src/Hangfire.Core/Processing/BackgroundExecutionOptions.cs
  class BackgroundExecutionOptions (line 20) | internal sealed class BackgroundExecutionOptions
    method BackgroundExecutionOptions (line 28) | public BackgroundExecutionOptions()
    method GetBackOffMultiplier (line 78) | internal static TimeSpan GetBackOffMultiplier(int retryAttemptNumber)

FILE: src/Hangfire.Core/Processing/BackgroundTaskScheduler.cs
  class BackgroundTaskScheduler (line 52) | public sealed class BackgroundTaskScheduler : TaskScheduler, IDisposable
    method BackgroundTaskScheduler (line 79) | public BackgroundTaskScheduler()
    method BackgroundTaskScheduler (line 90) | public BackgroundTaskScheduler(int threadCount)
    method BackgroundTaskScheduler (line 105) | public BackgroundTaskScheduler(
    method Dispose (line 147) | public void Dispose()
    method QueueTask (line 173) | protected override void QueueTask(Task task)
    method TryExecuteTaskInline (line 187) | protected override bool TryExecuteTaskInline(Task task, bool taskWasPr...
    method GetScheduledTasks (line 204) | protected override IEnumerable<Task> GetScheduledTasks()
    method DefaultThreadFactory (line 210) | private static IEnumerable<Thread> DefaultThreadFactory(ThreadStart th...
    method DefaultExceptionHandler (line 227) | private static void DefaultExceptionHandler(Exception exception)
    method DispatchLoop (line 234) | private void DispatchLoop()
    method InvokeUnhandledExceptionHandler (line 324) | private void InvokeUnhandledExceptionHandler(Exception exception)
    method ThrowIfDisposed (line 343) | private void ThrowIfDisposed()

FILE: src/Hangfire.Core/Processing/IBackgroundDispatcher.cs
  type IBackgroundDispatcher (line 23) | public interface IBackgroundDispatcher : IDisposable
    method Wait (line 25) | bool Wait(TimeSpan timeout);
    method WaitAsync (line 26) | Task WaitAsync(TimeSpan timeout, CancellationToken cancellationToken);

FILE: src/Hangfire.Core/Processing/IBackgroundExecution.cs
  type IBackgroundExecution (line 22) | public interface IBackgroundExecution : IDisposable
    method Run (line 24) | void Run([NotNull] Action<Guid, object> callback, [CanBeNull] object s...
    method RunAsync (line 25) | Task RunAsync([NotNull] Func<Guid, object, Task> callback, [CanBeNull]...

FILE: src/Hangfire.Core/Processing/InlineSynchronizationContext.cs
  class InlineSynchronizationContext (line 22) | internal sealed class InlineSynchronizationContext : SynchronizationCont...
    method Dequeue (line 29) | public Tuple<SendOrPostCallback, object> Dequeue()
    method Dispose (line 35) | public void Dispose()
    method Post (line 40) | public override void Post(SendOrPostCallback callback, object state)

FILE: src/Hangfire.Core/Processing/TaskExtensions.cs
  class TaskExtensions (line 27) | internal static class TaskExtensions
    method WaitOne (line 32) | public static bool WaitOne([NotNull] this WaitHandle waitHandle, TimeS...
    method WaitOneAsync (line 75) | public static async Task<bool> WaitOneAsync([NotNull] this WaitHandle ...
    method IsTaskLike (line 98) | public static bool IsTaskLike(this Type type, out Func<object, Task> g...
    method GetTaskLikeResult (line 137) | public static object GetTaskLikeResult([NotNull] this Task task, objec...
    method CallBack (line 171) | private static void CallBack(object state, bool timedOut)
    method Callback (line 179) | private static void Callback(object state)
    method CreateCompletionSource (line 190) | private static TaskCompletionSource<T> CreateCompletionSource<T>()
    method TrySetCanceled (line 199) | private static void TrySetCanceled<T>(TaskCompletionSource<T> source, ...
    class InvalidWaitHandle (line 208) | private sealed class InvalidWaitHandle : WaitHandle

FILE: src/Hangfire.Core/Profiling/EmptyProfiler.cs
  class EmptyProfiler (line 20) | internal sealed class EmptyProfiler : IProfiler
    method EmptyProfiler (line 24) | private EmptyProfiler()
    method InvokeMeasured (line 28) | public TResult InvokeMeasured<TInstance, TResult>(

FILE: src/Hangfire.Core/Profiling/IProfiler.cs
  type IProfiler (line 22) | internal interface IProfiler
    method InvokeMeasured (line 25) | TResult InvokeMeasured<TInstance, TResult>(

FILE: src/Hangfire.Core/Profiling/ProfilerExtensions.cs
  class ProfilerExtensions (line 21) | internal static class ProfilerExtensions
    method InvokeMeasured (line 23) | public static void InvokeMeasured<TInstance>(
    method InvokeAction (line 35) | private static bool InvokeAction<TInstance>(InstanceAction<TInstance> ...
    method MessageCallback (line 41) | private static string MessageCallback<TInstance>(InstanceAction<TInsta...
    type InstanceAction (line 46) | internal struct InstanceAction<TInstance>
      method InstanceAction (line 48) | public InstanceAction([CanBeNull] TInstance instance, [NotNull] Acti...
      method ToString (line 66) | public override string ToString()

FILE: src/Hangfire.Core/Profiling/SlowLogProfiler.cs
  class SlowLogProfiler (line 22) | internal sealed class SlowLogProfiler : IProfiler
    method SlowLogProfiler (line 29) | public SlowLogProfiler(ILog logger)
    method SlowLogProfiler (line 34) | public SlowLogProfiler(ILog logger, TimeSpan threshold)
    method InvokeMeasured (line 40) | public TResult InvokeMeasured<TInstance, TResult>(

FILE: src/Hangfire.Core/Properties/Annotations.cs
  class ExcludeFromCodeCoverageAttribute (line 8) | [Conditional("DEBUG")] // don't bloat release assemblies
  class CanBeNullAttribute (line 42) | [EditorBrowsable(EditorBrowsableState.Never)]
  class NotNullAttribute (line 59) | [EditorBrowsable(EditorBrowsableState.Never)]
  class StringFormatMethodAttribute (line 80) | [EditorBrowsable(EditorBrowsableState.Never)]
    method StringFormatMethodAttribute (line 88) | public StringFormatMethodAttribute(string formatParameterName)
  class InvokerParameterNameAttribute (line 108) | [EditorBrowsable(EditorBrowsableState.Never)]
  class NotifyPropertyChangedInvocatorAttribute (line 149) | [EditorBrowsable(EditorBrowsableState.Never)]
    method NotifyPropertyChangedInvocatorAttribute (line 153) | public NotifyPropertyChangedInvocatorAttribute() { }
    method NotifyPropertyChangedInvocatorAttribute (line 154) | public NotifyPropertyChangedInvocatorAttribute(string parameterName)
  class ContractAnnotationAttribute (line 204) | [EditorBrowsable(EditorBrowsableState.Never)]
    method ContractAnnotationAttribute (line 208) | public ContractAnnotationAttribute([NotNull] string contract)
    method ContractAnnotationAttribute (line 211) | public ContractAnnotationAttribute([NotNull] string contract, bool for...
  class LocalizationRequiredAttribute (line 231) | [EditorBrowsable(EditorBrowsableState.Never)]
    method LocalizationRequiredAttribute (line 235) | public LocalizationRequiredAttribute() : this(true) { }
    method LocalizationRequiredAttribute (line 236) | public LocalizationRequiredAttribute(bool required)
  class CannotApplyEqualityOperatorAttribute (line 266) | [EditorBrowsable(EditorBrowsableState.Never)]
  class BaseTypeRequiredAttribute (line 282) | [EditorBrowsable(EditorBrowsableState.Never)]
    method BaseTypeRequiredAttribute (line 287) | public BaseTypeRequiredAttribute([NotNull] Type baseType)
  class UsedImplicitlyAttribute (line 300) | [EditorBrowsable(EditorBrowsableState.Never)]
    method UsedImplicitlyAttribute (line 304) | public UsedImplicitlyAttribute()
    method UsedImplicitlyAttribute (line 307) | public UsedImplicitlyAttribute(ImplicitUseKindFlags useKindFlags)
    method UsedImplicitlyAttribute (line 310) | public UsedImplicitlyAttribute(ImplicitUseTargetFlags targetFlags)
    method UsedImplicitlyAttribute (line 313) | public UsedImplicitlyAttribute(
  class MeansImplicitUseAttribute (line 329) | [EditorBrowsable(EditorBrowsableState.Never)]
    method MeansImplicitUseAttribute (line 333) | public MeansImplicitUseAttribute()
    method MeansImplicitUseAttribute (line 336) | public MeansImplicitUseAttribute(ImplicitUseKindFlags useKindFlags)
    method MeansImplicitUseAttribute (line 339) | public MeansImplicitUseAttribute(ImplicitUseTargetFlags targetFlags)
    method MeansImplicitUseAttribute (line 342) | public MeansImplicitUseAttribute(
  type ImplicitUseKindFlags (line 353) | [EditorBrowsable(EditorBrowsableState.Never)]
  type ImplicitUseTargetFlags (line 377) | [EditorBrowsable(EditorBrowsableState.Never)]
  class PublicAPIAttribute (line 395) | [EditorBrowsable(EditorBrowsableState.Never)]
    method PublicAPIAttribute (line 400) | public PublicAPIAttribute() : this(String.Empty) { }
    method PublicAPIAttribute (line 401) | public PublicAPIAttribute([NotNull] string comment)
  class InstantHandleAttribute (line 416) | [EditorBrowsable(EditorBrowsableState.Never)]
  class PureAttribute (line 431) | [EditorBrowsable(EditorBrowsableState.Never)]
  class HtmlElementAttributesAttribute (line 435) | [EditorBrowsable(EditorBrowsableState.Never)]
    method HtmlElementAttributesAttribute (line 441) | public HtmlElementAttributesAttribute() : this(String.Empty) { }
    method HtmlElementAttributesAttribute (line 442) | public HtmlElementAttributesAttribute([NotNull] string name)
  class HtmlAttributeValueAttribute (line 450) | [EditorBrowsable(EditorBrowsableState.Never)]
    method HtmlAttributeValueAttribute (line 456) | public HtmlAttributeValueAttribute([NotNull] string name)

FILE: src/Hangfire.Core/Properties/NamespaceDoc.cs
  class NamespaceDoc (line 12) | [CompilerGenerated]
  class NamespaceDoc (line 28) | [CompilerGenerated]
  class NamespaceDoc (line 42) | [CompilerGenerated]
  class NamespaceDoc (line 54) | [CompilerGenerated]
  class NamespaceDoc (line 67) | [CompilerGenerated]
  class NamespaceDoc (line 79) | [CompilerGenerated]
  class NamespaceGroupDoc (line 92) | [CompilerGenerated]
  class NamespaceDoc (line 102) | [CompilerGenerated]
  class NamespaceDoc (line 115) | [CompilerGenerated]
  class NamespaceDoc (line 130) | [CompilerGenerated]
  class NamespaceDoc (line 145) | [CompilerGenerated]
  class NamespaceGroupDoc (line 159) | [CompilerGenerated]
  class NamespaceDoc (line 170) | [CompilerGenerated]
  class NamespaceDoc (line 186) | [CompilerGenerated]

FILE: src/Hangfire.Core/QueueAttribute.cs
  class QueueAttribute (line 49) | public sealed class QueueAttribute : JobFilterAttribute, IElectStateFilter
    method QueueAttribute (line 56) | public QueueAttribute(string queue)
    method OnStateElection (line 67) | public void OnStateElection(ElectStateContext context)

FILE: src/Hangfire.Core/RecurringJob.cs
  class RecurringJob (line 26) | public static class RecurringJob
    method AddOrUpdate (line 51) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 62) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 72) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 83) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 93) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 106) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 118) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 131) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 143) | [Obsolete("Please use AddOrUpdate(string, Expression<Action>, Func<str...
    method AddOrUpdate (line 155) | public static void AddOrUpdate(
    method AddOrUpdate (line 163) | public static void AddOrUpdate(
    method AddOrUpdate (line 173) | public static void AddOrUpdate(
    method AddOrUpdate (line 182) | public static void AddOrUpdate(
    method AddOrUpdate (line 193) | [Obsolete("Please use AddOrUpdate<T>(string, Expression<Action<T>>, Fu...
    method AddOrUpdate (line 205) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 213) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 223) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 232) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 243) | [Obsolete("Please use AddOrUpdate(string, Expression<Action>, string, ...
    method AddOrUpdate (line 255) | public static void AddOrUpdate(
    method AddOrUpdate (line 263) | public static void AddOrUpdate(
    method AddOrUpdate (line 273) | public static void AddOrUpdate(
    method AddOrUpdate (line 282) | public static void AddOrUpdate(
    method AddOrUpdate (line 295) | [Obsolete("Please use AddOrUpdate<T>(string, Expression<Action<T>>, st...
    method AddOrUpdate (line 307) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 315) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 325) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 334) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 347) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 358) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 368) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 379) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 389) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 402) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 414) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 427) | [Obsolete("Please use an overload with the explicit recurringJobId par...
    method AddOrUpdate (line 439) | [Obsolete("Please use AddOrUpdate(string, Expression<Func<Task>>, Func...
    method AddOrUpdate (line 451) | public static void AddOrUpdate(
    method AddOrUpdate (line 459) | public static void AddOrUpdate(
    method AddOrUpdate (line 469) | public static void AddOrUpdate(
    method AddOrUpdate (line 478) | public static void AddOrUpdate(
    method AddOrUpdate (line 489) | [Obsolete("Please use AddOrUpdate<T>(string, Expression<Func<T, Task>>...
    method AddOrUpdate (line 501) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 509) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 519) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 528) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 539) | [Obsolete("Please use AddOrUpdate(string, Expression<Func<Task>>, stri...
    method AddOrUpdate (line 551) | public static void AddOrUpdate(
    method AddOrUpdate (line 559) | public static void AddOrUpdate(
    method AddOrUpdate (line 569) | public static void AddOrUpdate(
    method AddOrUpdate (line 578) | public static void AddOrUpdate(
    method AddOrUpdate (line 591) | [Obsolete("Please use AddOrUpdate<T>(string, Expression<Func<T, Task>>...
    method AddOrUpdate (line 603) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 611) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 621) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 630) | public static void AddOrUpdate<T>(
    method RemoveIfExists (line 643) | public static void RemoveIfExists([NotNull] string recurringJobId)
    method Trigger (line 648) | [Obsolete("Please use the TriggerJob method instead. Will be removed i...
    method TriggerJob (line 654) | public static string TriggerJob([NotNull] string recurringJobId)
    method GetRecurringJobId (line 659) | private static string GetRecurringJobId(Job job)

FILE: src/Hangfire.Core/RecurringJobEntity.cs
  class RecurringJobEntity (line 26) | internal sealed class RecurringJobEntity
    method RecurringJobEntity (line 32) | public RecurringJobEntity(
    method ScheduleNext (line 131) | public void ScheduleNext(ITimeZoneResolver timeZoneResolver, DateTime ...
    method ScheduleNext (line 136) | public IEnumerable<DateTime> ScheduleNext(
    method IsChanged (line 183) | public bool IsChanged(DateTime now, out IReadOnlyDictionary<string, st...
    method ScheduleRetry (line 189) | public void ScheduleRetry(DateTime nextAttempt, string error)
    method Disable (line 196) | public void Disable(string error)
    method GetChangedFields (line 202) | private IReadOnlyDictionary<string, string> GetChangedFields(DateTime ...
    method ToString (line 280) | public override string ToString()
    method ParseCronExpression (line 285) | public static CronExpression ParseCronExpression([NotNull] string cron...

FILE: src/Hangfire.Core/RecurringJobExtensions.cs
  class RecurringJobExtensions (line 29) | internal static class RecurringJobExtensions
    method AcquireDistributedRecurringJobLock (line 31) | public static IDisposable AcquireDistributedRecurringJobLock(
    method GetRecurringJob (line 42) | public static RecurringJobEntity GetRecurringJob(
    method GetOrCreateRecurringJob (line 55) | public static RecurringJobEntity GetOrCreateRecurringJob(
    method UpdateRecurringJob (line 68) | public static void UpdateRecurringJob(
    method TriggerRecurringJob (line 96) | public static BackgroundJob TriggerRecurringJob(
    method EnqueueBackgroundJob (line 129) | public static void EnqueueBackgroundJob(

FILE: src/Hangfire.Core/RecurringJobManager.cs
  class RecurringJobManager (line 30) | public class RecurringJobManager : IRecurringJobManager, IRecurringJobMa...
    method RecurringJobManager (line 41) | public RecurringJobManager()
    method RecurringJobManager (line 46) | public RecurringJobManager([NotNull] JobStorage storage)
    method RecurringJobManager (line 51) | public RecurringJobManager([NotNull] JobStorage storage, [NotNull] IJo...
    method RecurringJobManager (line 56) | public RecurringJobManager(
    method RecurringJobManager (line 64) | public RecurringJobManager(
    method RecurringJobManager (line 73) | public RecurringJobManager([NotNull] JobStorage storage, [NotNull] IBa...
    method RecurringJobManager (line 78) | public RecurringJobManager([NotNull] JobStorage storage, [NotNull] IBa...
    method RecurringJobManager (line 83) | internal RecurringJobManager(
    method AddOrUpdate (line 97) | public void AddOrUpdate(string recurringJobId, Job job, string cronExp...
    method ValidateCronExpression (line 154) | private static void ValidateCronExpression(string cronExpression)
    method Trigger (line 169) | public void Trigger(string recurringJobId) => TriggerJob(recurringJobId);
    method TriggerExecution (line 171) | [Obsolete("Please use the `TriggerJob` method instead. Will be removed...
    method TriggerJob (line 174) | public string TriggerJob(string recurringJobId)
    method RemoveIfExists (line 226) | public void RemoveIfExists(string recurringJobId)

FILE: src/Hangfire.Core/RecurringJobManagerExtensions.cs
  class RecurringJobManagerExtensions (line 25) | public static class RecurringJobManagerExtensions
    method AddOrUpdate (line 27) | public static void AddOrUpdate(
    method AddOrUpdate (line 41) | [Obsolete("Please use the AddOrUpdate(string, Job, string, RecurringJo...
    method AddOrUpdate (line 52) | [Obsolete("Please use the AddOrUpdate(string, Job, string, RecurringJo...
    method AddOrUpdate (line 72) | [Obsolete("Please use the AddOrUpdate(string, Expression<Action>, Func...
    method AddOrUpdate (line 85) | public static void AddOrUpdate(
    method AddOrUpdate (line 94) | public static void AddOrUpdate(
    method AddOrUpdate (line 105) | public static void AddOrUpdate(
    method AddOrUpdate (line 115) | public static void AddOrUpdate(
    method AddOrUpdate (line 129) | [Obsolete("Please use the AddOrUpdate<T>(string, Expression<Action<T>>...
    method AddOrUpdate (line 142) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 151) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 162) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 172) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 186) | [Obsolete("Please use the AddOrUpdate(string, Expression<Action>, stri...
    method AddOrUpdate (line 204) | public static void AddOrUpdate(
    method AddOrUpdate (line 213) | public static void AddOrUpdate(
    method AddOrUpdate (line 226) | public static void AddOrUpdate(
    method AddOrUpdate (line 236) | public static void AddOrUpdate(
    method AddOrUpdate (line 251) | [Obsolete("Please use the AddOrUpdate<T>(string, Expression<Action<T>>...
    method AddOrUpdate (line 269) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 278) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 291) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 301) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 316) | [Obsolete("Please use the AddOrUpdate(string, Expression<Func<Task>>, ...
    method AddOrUpdate (line 329) | public static void AddOrUpdate(
    method AddOrUpdate (line 338) | public static void AddOrUpdate(
    method AddOrUpdate (line 349) | public static void AddOrUpdate(
    method AddOrUpdate (line 359) | public static void AddOrUpdate(
    method AddOrUpdate (line 373) | [Obsolete("Please use the AddOrUpdate<T>(string, Expression<Func<T, Ta...
    method AddOrUpdate (line 386) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 395) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 406) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 416) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 430) | [Obsolete("Please use the AddOrUpdate(string, Expression<Func<Task>>, ...
    method AddOrUpdate (line 448) | public static void AddOrUpdate(
    method AddOrUpdate (line 457) | public static void AddOrUpdate(
    method AddOrUpdate (line 470) | public static void AddOrUpdate(
    method AddOrUpdate (line 480) | public static void AddOrUpdate(
    method AddOrUpdate (line 495) | [Obsolete("Please use the AddOrUpdate<T>(string, Expression<Func<T, Ta...
    method AddOrUpdate (line 513) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 522) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 535) | public static void AddOrUpdate<T>(
    method AddOrUpdate (line 545) | public static void AddOrUpdate<T>(

FILE: src/Hangfire.Core/RecurringJobOptions.cs
  class RecurringJobOptions (line 22) | public class RecurringJobOptions
    method RecurringJobOptions (line 27) | public RecurringJobOptions()

FILE: src/Hangfire.Core/Server/AspNetShutdownDetector.cs
  class AspNetShutdownDetector (line 25) | internal static class AspNetShutdownDetector
    method GetShutdownToken (line 50) | public static CancellationToken GetShutdownToken()
    method EnsureInitialized (line 67) | private static void EnsureInitialized()
    method CheckForAppDomainShutdown (line 130) | private static void CheckForAppDomainShutdown(object state)
    method Cancel (line 166) | private static void Cancel(string reason)
    method RegisterForStopListeningEvent (line 183) | private static void RegisterForStopListeningEvent(ref bool success)
    method StopListening (line 203) | private static void StopListening(object sender, EventArgs e)
    method InitializeShutdownReason (line 208) | private static void InitializeShutdownReason(ref bool success)
    method InitializeMgdHasConfigChanged (line 248) | private static void InitializeMgdHasConfigChanged(ref bool success)
    method InitializeDisposingHttpRuntime (line 269) | private static void InitializeDisposingHttpRuntime(ref bool success)
    method CreateGetStaticFieldDelegate (line 296) | private static Func<T> CreateGetStaticFieldDelegate<T>(FieldInfo field...
    method CreateGetFieldDelegate (line 302) | private static Func<object, T> CreateGetFieldDelegate<T>(FieldInfo fie...
    method GetLogger (line 311) | private static ILog GetLogger()

FILE: src/Hangfire.Core/Server/BackgroundJobPerformer.cs
  class BackgroundJobPerformer (line 26) | public class BackgroundJobPerformer : IBackgroundJobPerformer
    method BackgroundJobPerformer (line 33) | public BackgroundJobPerformer()
    method BackgroundJobPerformer (line 38) | public BackgroundJobPerformer([NotNull] IJobFilterProvider filterProvi...
    method BackgroundJobPerformer (line 43) | public BackgroundJobPerformer(
    method BackgroundJobPerformer (line 50) | public BackgroundJobPerformer(
    method BackgroundJobPerformer (line 58) | internal BackgroundJobPerformer(
    method Perform (line 69) | public object Perform(PerformContext context)
    method GetFilters (line 109) | private JobFilterInfo GetFilters(Job job)
    method PerformJobWithFilters (line 114) | private object PerformJobWithFilters(PerformContext context, JobFilter...
    method InvokeNextServerFilter (line 122) | private static PerformedContext InvokeNextServerFilter(
    method InvokeServerFilter (line 137) | private static PerformedContext InvokeServerFilter(
    method InvokeOnPerforming (line 194) | private static void InvokeOnPerforming(KeyValuePair<IServerFilter, Per...
    method InvokeOnPerformed (line 208) | private static void InvokeOnPerformed(KeyValuePair<IServerFilter, Perf...
    method InvokeServerExceptionFilters (line 222) | private static void InvokeServerExceptionFilters(
    method InvokeOnServerException (line 235) | private static void InvokeOnServerException(KeyValuePair<IServerExcept...

FILE: src/Hangfire.Core/Server/BackgroundProcessContext.cs
  class BackgroundProcessContext (line 24) | public class BackgroundProcessContext
    method BackgroundProcessContext (line 26) | [Obsolete("This constructor overload is deprecated and will be removed...
    method BackgroundProcessContext (line 36) | public BackgroundProcessContext(
    method Wait (line 82) | public void Wait(TimeSpan timeout)

FILE: src/Hangfire.Core/Server/BackgroundProcessDispatcherBuilder.cs
  class BackgroundProcessDispatcherBuilder (line 25) | internal sealed class BackgroundProcessDispatcherBuilder : IBackgroundPr...
    method BackgroundProcessDispatcherBuilder (line 30) | public BackgroundProcessDispatcherBuilder(
    method Create (line 41) | public IBackgroundDispatcher Create(BackgroundServerContext context, B...
    method ToString (line 61) | public override string ToString()
    method ExecuteProcess (line 66) | private static void ExecuteProcess(Guid executionId, object state)

FILE: src/Hangfire.Core/Server/BackgroundProcessDispatcherBuilderAsync.cs
  class BackgroundProcessDispatcherBuilderAsync (line 24) | internal sealed class BackgroundProcessDispatcherBuilderAsync : IBackgro...
    method BackgroundProcessDispatcherBuilderAsync (line 31) | public BackgroundProcessDispatcherBuilderAsync(
    method Create (line 47) | public IBackgroundDispatcher Create(BackgroundServerContext context, B...
    method ToString (line 69) | public override string ToString()
    method ExecuteProcess (line 74) | private static async Task ExecuteProcess(Guid executionId, object state)

FILE: src/Hangfire.Core/Server/BackgroundProcessExtensions.cs
  class BackgroundProcessExtensions (line 26) | public static class BackgroundProcessExtensions
    method UseBackgroundPool (line 28) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseBackgroundPool (line 34) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseBackgroundPool (line 41) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseBackgroundPool (line 54) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseBackgroundPool (line 66) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseBackgroundPool (line 72) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseBackgroundPool (line 82) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseBackgroundPool (line 97) | public static IBackgroundProcessDispatcherBuilder UseBackgroundPool(
    method UseThreadPool (line 118) | public static IBackgroundProcessDispatcherBuilder UseThreadPool(
    method UseThreadPool (line 124) | public static IBackgroundProcessDispatcherBuilder UseThreadPool(
    method DefaultThreadFactory (line 134) | internal static IEnumerable<Thread> DefaultThreadFactory(

FILE: src/Hangfire.Core/Server/BackgroundProcessingServer.cs
  class BackgroundProcessingServer (line 41) | public sealed class BackgroundProcessingServer : IBackgroundProcessingSe...
    method BackgroundProcessingServer (line 60) | public BackgroundProcessingServer([NotNull] IEnumerable<IBackgroundPro...
    method BackgroundProcessingServer (line 65) | public BackgroundProcessingServer(
    method BackgroundProcessingServer (line 72) | public BackgroundProcessingServer(
    method BackgroundProcessingServer (line 79) | public BackgroundProcessingServer(
    method BackgroundProcessingServer (line 87) | public BackgroundProcessingServer(
    method BackgroundProcessingServer (line 96) | public BackgroundProcessingServer(
    method BackgroundProcessingServer (line 109) | internal BackgroundProcessingServer(
    method SendStop (line 126) | public void SendStop()
    method WaitForShutdown (line 135) | public bool WaitForShutdown(TimeSpan timeout)
    method WaitForShutdownAsync (line 143) | public async Task WaitForShutdownAsync(CancellationToken cancellationT...
    method Dispose (line 151) | public void Dispose()
    method OnCurrentDomainUnload (line 180) | private void OnCurrentDomainUnload(object sender, EventArgs args)
    method OnAspNetShutdown (line 197) | private void OnAspNetShutdown()
    method GetProcesses (line 222) | private static IBackgroundProcessDispatcherBuilder[] GetProcesses([Not...
    method CreateDispatcher (line 228) | private IBackgroundDispatcher CreateDispatcher()
    method RunServer (line 247) | private void RunServer(Guid executionId, object state)
    method ThreadFactory (line 252) | private static IEnumerable<Thread> ThreadFactory(ThreadStart threadStart)
    method ThrowIfDisposed (line 261) | private void ThrowIfDisposed()

FILE: src/Hangfire.Core/Server/BackgroundProcessingServerOptions.cs
  class BackgroundProcessingServerOptions (line 21) | public sealed class BackgroundProcessingServerOptions
    method BackgroundProcessingServerOptions (line 29) | public BackgroundProcessingServerOptions()

FILE: src/Hangfire.Core/Server/BackgroundServerContext.cs
  class BackgroundServerContext (line 23) | public class BackgroundServerContext
    method BackgroundServerContext (line 25) | public BackgroundServerContext(

FILE: src/Hangfire.Core/Server/BackgroundServerProcess.cs
  class BackgroundServerProcess (line 28) | internal sealed class BackgroundServerProcess : IBackgroundServerProcess
    method BackgroundServerProcess (line 38) | public BackgroundServerProcess(
    method Execute (line 61) | public void Execute(Guid executionId, BackgroundExecution execution, C...
    method CreateHeartbeatProcess (line 129) | private IBackgroundDispatcher CreateHeartbeatProcess(BackgroundServerC...
    method GetRequiredProcesses (line 151) | private IEnumerable<IBackgroundProcessDispatcherBuilder> GetRequiredPr...
    method GetStorageComponents (line 165) | private IEnumerable<IBackgroundProcessDispatcherBuilder> GetStorageCom...
    method GetServerId (line 179) | private string GetServerId()
    method CreateServer (line 201) | private void CreateServer(BackgroundServerContext context)
    method ServerDelete (line 218) | private void ServerDelete(BackgroundServerContext context, Stopwatch s...
    method StartDispatchers (line 243) | private void StartDispatchers(BackgroundServerContext context, ICollec...
    method WaitForDispatchers (line 260) | private void WaitForDispatchers(
    method DisposeDispatchers (line 301) | private static void DisposeDispatchers(IEnumerable<IBackgroundDispatch...
    method GetServerContext (line 309) | private static ServerContext GetServerContext(IDictionary<string, obje...
    method GetServerTemplate (line 326) | internal static string GetServerTemplate(string serverId)

FILE: src/Hangfire.Core/Server/CoreBackgroundJobPerformer.cs
  class CoreBackgroundJobPerformer (line 28) | internal sealed class CoreBackgroundJobPerformer : IBackgroundJobPerformer
    method CoreBackgroundJobPerformer (line 41) | public CoreBackgroundJobPerformer([NotNull] JobActivator activator, [C...
    method Perform (line 47) | public object Perform(PerformContext context)
    method HandleJobPerformanceException (line 76) | internal static void HandleJobPerformanceException(Exception exception...
    method InvokeMethod (line 110) | private object InvokeMethod(PerformContext context, object instance, o...
    method InvokeOnTaskScheduler (line 154) | private object InvokeOnTaskScheduler(PerformContext context, Backgroun...
    method InvokeOnTaskSchedulerInternal (line 169) | private static object InvokeOnTaskSchedulerInternal(object state)
    method InvokeOnTaskPump (line 177) | private static object InvokeOnTaskPump(PerformContext context, Backgro...
    method InvokeSynchronously (line 220) | private static object InvokeSynchronously(object state)
    method InvokeSynchronouslyInternal (line 252) | private static void InvokeSynchronouslyInternal(object state)
    method SubstituteArguments (line 257) | private static object[] SubstituteArguments(PerformContext context)
    class BackgroundJobMethod (line 282) | private sealed class BackgroundJobMethod(MethodInfo methodInfo, object...
      method Invoke (line 287) | public object Invoke()

FILE: src/Hangfire.Core/Server/DelayedJobScheduler.cs
  class DelayedJobScheduler (line 64) | public class DelayedJobScheduler : IBackgroundProcess
    method DelayedJobScheduler (line 91) | public DelayedJobScheduler()
    method DelayedJobScheduler (line 101) | public DelayedJobScheduler(TimeSpan pollingDelay)
    method DelayedJobScheduler (line 114) | public DelayedJobScheduler(TimeSpan pollingDelay, [NotNull] IBackgroun...
    method Execute (line 140) | public void Execute(BackgroundProcessContext context)
    method ToString (line 160) | public override string ToString()
    method EnqueueNextScheduledJobs (line 165) | private int EnqueueNextScheduledJobs(BackgroundProcessContext context)
    method EnqueueEntry (line 278) | private static void EnqueueEntry(string entry, int colonIndex, IWriteO...
    method EnqueueBackgroundJob (line 289) | private void EnqueueBackgroundJob(BackgroundProcessContext context, IS...
    method IsBatchingAvailable (line 373) | private bool IsBatchingAvailable(JobStorage storage, IStorageConnectio...
    method UseConnectionDistributedLock (line 405) | private T UseConnectionDistributedLock<T>(JobStorage storage, Func<ISt...

FILE: src/Hangfire.Core/Server/IBackgroundJobPerformer.cs
  type IBackgroundJobPerformer (line 18) | public interface IBackgroundJobPerformer
    method Perform (line 20) | object Perform(PerformContext context);

FILE: src/Hangfire.Core/Server/IBackgroundProcess.cs
  type IBackgroundProcess (line 35) | public interface IBackgroundProcess : IServerProcess
    method Execute (line 42) | void Execute([NotNull] BackgroundProcessContext context);

FILE: src/Hangfire.Core/Server/IBackgroundProcessAsync.cs
  type IBackgroundProcessAsync (line 21) | public interface IBackgroundProcessAsync
    method ExecuteAsync (line 23) | Task ExecuteAsync([NotNull] BackgroundProcessContext context);

FILE: src/Hangfire.Core/Server/IBackgroundProcessDispatcherBuilder.cs
  type IBackgroundProcessDispatcherBuilder (line 21) | public interface IBackgroundProcessDispatcherBuilder
    method Create (line 23) | IBackgroundDispatcher Create([NotNull] BackgroundServerContext context...

FILE: src/Hangfire.Core/Server/IBackgroundProcessingServer.cs
  type IBackgroundProcessingServer (line 22) | public interface IBackgroundProcessingServer : IDisposable
    method SendStop (line 24) | void SendStop();
    method WaitForShutdown (line 26) | bool WaitForShutdown(TimeSpan timeout);
    method WaitForShutdownAsync (line 27) | Task WaitForShutdownAsync(CancellationToken cancellationToken);

FILE: src/Hangfire.Core/Server/IBackgroundServerProcess.cs
  type IBackgroundServerProcess (line 22) | internal interface IBackgroundServerProcess
    method Execute (line 24) | void Execute(

FILE: src/Hangfire.Core/Server/IServerExceptionFilter.cs
  type IServerExceptionFilter (line 21) | public interface IServerExceptionFilter
    method OnServerException (line 27) | void OnServerException(ServerExceptionContext filterContext);

FILE: src/Hangfire.Core/Server/IServerFilter.cs
  type IServerFilter (line 21) | public interface IServerFilter
    method OnPerforming (line 27) | void OnPerforming(PerformingContext context);
    method OnPerformed (line 33) | void OnPerformed(PerformedContext context);

FILE: src/Hangfire.Core/Server/JobAbortedException.cs
  class JobAbortedException (line 24) | public class JobAbortedException : OperationCanceledException
    method JobAbortedException (line 26) | public JobAbortedException()
    method JobAbortedException (line 37) | protected JobAbortedException(SerializationInfo info, StreamingContext...

FILE: src/Hangfire.Core/Server/JobPerformanceException.cs
  class JobPerformanceException (line 24) | public class JobPerformanceException : Exception
    method JobPerformanceException (line 26) | public JobPerformanceException(string message, Exception innerException)
    method JobPerformanceException (line 31) | public JobPerformanceException(string message, Exception innerExceptio...
    method JobPerformanceException (line 44) | protected JobPerformanceException(SerializationInfo info, StreamingCon...

FILE: src/Hangfire.Core/Server/PerformContext.cs
  class PerformContext (line 29) | public class PerformContext
    method PerformContext (line 31) | public PerformContext([NotNull] PerformContext context)
    method PerformContext (line 37) | [Obsolete("Please use PerformContext(JobStorage, IStorageConnection, B...
    method PerformContext (line 46) | public PerformContext(
    method PerformContext (line 55) | internal PerformContext(
    method SetJobParameter (line 112) | public void SetJobParameter([NotNull] string name, object value)
    method GetJobParameter (line 119) | public T GetJobParameter<T>([NotNull] string name) => GetJobParameter<...
    method GetJobParameter (line 121) | public T GetJobParameter<T>([NotNull] string name, bool allowStale)

FILE: src/Hangfire.Core/Server/PerformedContext.cs
  class PerformedContext (line 25) | public class PerformedContext : PerformContext
    method PerformedContext (line 27) | public PerformedContext(

FILE: src/Hangfire.Core/Server/PerformingContext.cs
  class PerformingContext (line 22) | public class PerformingContext : PerformContext
    method PerformingContext (line 24) | public PerformingContext(PerformContext context)

FILE: src/Hangfire.Core/Server/RecurringJobScheduler.cs
  class RecurringJobScheduler (line 66) | public class RecurringJobScheduler : IBackgroundProcess
    method RecurringJobScheduler (line 87) | public RecurringJobScheduler()
    method RecurringJobScheduler (line 99) | public RecurringJobScheduler(
    method RecurringJobScheduler (line 112) | public RecurringJobScheduler(
    method RecurringJobScheduler (line 128) | public RecurringJobScheduler(
    method RecurringJobScheduler (line 136) | public RecurringJobScheduler(
    method Execute (line 168) | public void Execute(BackgroundProcessContext context)
    method ToString (line 196) | public override string ToString()
    method EnqueueNextRecurringJobs (line 201) | private int EnqueueNextRecurringJobs(BackgroundProcessContext context)
    method TryEnqueueBackgroundJob (line 280) | private void TryEnqueueBackgroundJob(
    method ScheduleRecurringJob (line 300) | private void ScheduleRecurringJob(BackgroundProcessContext context, IS...
    method RetryRecurringJob (line 385) | private void RetryRecurringJob(string recurringJobId, RecurringJobEnti...
    method RemoveRecurringJob (line 406) | private void RemoveRecurringJob(IStorageConnection connection, string ...
    method UseConnectionDistributedLock (line 417) | private T UseConnectionDistributedLock<T>(JobStorage storage, Func<ISt...
    method IsBatchingAvailable (line 441) | private bool IsBatchingAvailable(JobStorage storage, IStorageConnectio...

FILE: src/Hangfire.Core/Server/ServerContext.cs
  class ServerContext (line 18) | public class ServerContext
    method ServerContext (line 20) | public ServerContext()

FILE: src/Hangfire.Core/Server/ServerExceptionContext.cs
  class ServerExceptionContext (line 24) | public class ServerExceptionContext : PerformContext
    method ServerExceptionContext (line 26) | public ServerExceptionContext(

FILE: src/Hangfire.Core/Server/ServerHeartbeatProcess.cs
  class ServerHeartbeatProcess (line 24) | internal sealed class ServerHeartbeatProcess : IBackgroundProcess
    method ServerHeartbeatProcess (line 33) | public ServerHeartbeatProcess(TimeSpan interval, TimeSpan serverTimeou...
    method Execute (line 40) | public void Execute(BackgroundProcessContext context)

FILE: src/Hangfire.Core/Server/ServerJobCancellationToken.cs
  class ServerJobCancellationToken (line 27) | internal sealed class ServerJobCancellationToken : IJobCancellationToken...
    method ServerJobCancellationToken (line 42) | public ServerJobCancellationToken(
    method Dispose (line 66) | public void Dispose()
    method ThrowIfCancellationRequested (line 107) | public void ThrowIfCancellationRequested()
    method AddServer (line 128) | public static void AddServer(string serverId)
    method RemoveServer (line 133) | public static void RemoveServer(string serverId)
    method CheckAllCancellationTokens (line 138) | public static IEnumerable<Tuple<string, string>> CheckAllCancellationT...
    method TryCheckJobIsAborted (line 163) | public bool TryCheckJobIsAborted(IStorageConnection connection)
    method CheckJobStateChanged (line 182) | private bool CheckJobStateChanged(IStorageConnection connection)
    method IsJobStateChanged (line 193) | private bool IsJobStateChanged(IStorageConnection connection)
    method CheckDisposed (line 215) | private void CheckDisposed()
    class CancellationTokenHolder (line 223) | private sealed class CancellationTokenHolder : IDisposable
      method CancellationTokenHolder (line 228) | public CancellationTokenHolder(CancellationToken shutdownToken)
      method Abort (line 238) | public void Abort()
      method Dispose (line 243) | public void Dispose()

FILE: src/Hangfire.Core/Server/ServerJobCancellationWatcher.cs
  class ServerJobCancellationWatcher (line 21) | internal sealed class ServerJobCancellationWatcher : IBackgroundProcess
    method ServerJobCancellationWatcher (line 28) | public ServerJobCancellationWatcher(TimeSpan checkInterval)
    method Execute (line 33) | public void Execute(BackgroundProcessContext context)
    method ToString (line 61) | public override string ToString()

FILE: src/Hangfire.Core/Server/ServerProcessDispatcherBuilder.cs
  class ServerProcessDispatcherBuilder (line 26) | internal sealed class ServerProcessDispatcherBuilder : IBackgroundProces...
    method ServerProcessDispatcherBuilder (line 31) | public ServerProcessDispatcherBuilder(
    method Create (line 41) | public IBackgroundDispatcher Create(BackgroundServerContext context, B...
    method ToString (line 57) | public override string ToString()
    method ExecuteComponent (line 62) | private static void ExecuteComponent(Guid executionId, object state)

FILE: src/Hangfire.Core/Server/ServerWatchdog.cs
  class ServerWatchdog (line 21) | internal sealed class ServerWatchdog : IBackgroundProcess
    method ServerWatchdog (line 34) | public ServerWatchdog(TimeSpan checkInterval, TimeSpan serverTimeout)
    method Execute (line 40) | public void Execute(BackgroundProcessContext context)
    method ToString (line 54) | public override string ToString()

FILE: src/Hangfire.Core/Server/Worker.cs
  class Worker (line 43) | public class Worker : IBackgroundProcess
    method Worker (line 63) | public Worker() : this(EnqueuedState.DefaultQueue)
    method Worker (line 67) | public Worker([NotNull] params string[] queues)
    method Worker (line 72) | public Worker(
    method Worker (line 80) | internal Worker(
    method Execute (line 102) | public void Execute(BackgroundProcessContext context)
    method TryChangeState (line 198) | private IState TryChangeState(
    method Requeue (line 274) | private void Requeue(IFetchedJob fetchedJob)
    method PerformJob (line 286) | private IState PerformJob(

FILE: src/Hangfire.Core/States/ApplyStateContext.cs
  class ApplyStateContext (line 26) | public class ApplyStateContext : StateContext
    method ApplyStateContext (line 29) | public ApplyStateContext(
    method ApplyStateContext (line 37) | public ApplyStateContext(
    method ApplyStateContext (line 48) | internal ApplyStateContext(
    method GetJobParameter (line 99) | public T GetJobParameter<T>([NotNull] string name) => GetJobParameter<...
    method GetJobParameter (line 101) | public T GetJobParameter<T>([NotNull] string name, bool allowStale)

FILE: src/Hangfire.Core/States/AwaitingState.cs
  class AwaitingState (line 38) | public class AwaitingState : IState
    method AwaitingState (line 56) | public AwaitingState([NotNull] string parentId)
    method AwaitingState (line 68) | public AwaitingState([NotNull] string parentId, [NotNull] IState nextS...
    method AwaitingState (line 80) | [JsonConstructor]
    method AwaitingState (line 94) | public AwaitingState(
    method SerializeData (line 201) | public Dictionary<string, string> SerializeData()
    class Handler (line 222) | internal sealed class Handler : IStateHandler
      method Apply (line 224) | public void Apply(ApplyStateContext context, IWriteOnlyTransaction t...
      method Unapply (line 233) | public void Unapply(ApplyStateContext context, IWriteOnlyTransaction...

FILE: src/Hangfire.Core/States/BackgroundJobStateChanger.cs
  class BackgroundJobStateChanger (line 25) | public class BackgroundJobStateChanger : IBackgroundJobStateChanger
    method BackgroundJobStateChanger (line 30) | public BackgroundJobStateChanger()
    method BackgroundJobStateChanger (line 35) | public BackgroundJobStateChanger([NotNull] IJobFilterProvider filterPr...
    method BackgroundJobStateChanger (line 40) | public BackgroundJobStateChanger([NotNull] StateMachine stateMachine)
    method BackgroundJobStateChanger (line 45) | internal BackgroundJobStateChanger([NotNull] IJobFilterProvider filter...
    method ChangeState (line 53) | public IState ChangeState(StateChangeContext context)
    method GetJobData (line 174) | private static JobData GetJobData(StateChangeContext context)

FILE: src/Hangfire.Core/States/CoreStateMachine.cs
  class CoreStateMachine (line 23) | internal sealed class CoreStateMachine : IStateMachine
    method CoreStateMachine (line 27) | public CoreStateMachine()
    method CoreStateMachine (line 32) | internal CoreStateMachine([NotNull] Func<JobStorage, string, StateHand...
    method ApplyState (line 38) | public IState ApplyState(ApplyStateContext context)
    method GetStateHandlers (line 64) | private static StateHandlersCollection GetStateHandlers(JobStorage sto...
    type StateHandlersCollection (line 74) | internal readonly struct StateHandlersCollection(
      method GetEnumerator (line 79) | public Enumerator GetEnumerator() => new Enumerator(globalHandlers, ...
      type Enumerator (line 81) | public ref struct Enumerator
        method Enumerator (line 88) | public Enumerator(List<IStateHandler> globalHandlers, IEnumerable<...
        method MoveNext (line 96) | public bool MoveNext()

FILE: src/Hangfire.Core/States/DeletedState.cs
  class DeletedState (line 54) | public class DeletedState : IState
    method DeletedState (line 69) | public DeletedState() : this(null)
    method DeletedState (line 73) | public DeletedState([CanBeNull] ExceptionInfo exceptionInfo)
    method SerializeData (line 145) | public Dictionary<string, string> SerializeData()
    class Handler (line 160) | internal sealed class Handler : IStateHandler
      method Apply (line 162) | public void Apply(ApplyStateContext context, IWriteOnlyTransaction t...
      method Unapply (line 167) | public void Unapply(ApplyStateContext context, IWriteOnlyTransaction...

FILE: src/Hangfire.Core/States/ElectStateContext.cs
  class ElectStateContext (line 27) | public class ElectStateContext : StateContext
    method ElectStateContext (line 33) | public ElectStateContext([NotNull] ApplyStateContext applyContext)
    method ElectStateContext (line 38) | public ElectStateContext([NotNull] ApplyStateContext applyContext, [Ca...
    method SetJobParameter (line 99) | public void SetJobParameter<T>([NotNull] string name, T value)
    method GetJobParameter (line 105) | public T GetJobParameter<T>([NotNull] string name) => GetJobParameter<...
    method GetJobParameter (line 107) | public T GetJobParameter<T>([NotNull] string name, bool allowStale)

FILE: src/Hangfire.Core/States/EnqueuedState.cs
  class EnqueuedState (line 64) | public class EnqueuedState : IState
    method EnqueuedState (line 88) | public EnqueuedState()
    method EnqueuedState (line 108) | [JsonConstructor]
    method SerializeData (line 217) | public Dictionary<string, string> SerializeData()
    method TryValidateQueueName (line 226) | internal static bool TryValidateQueueName([NotNull] string value)
    method ValidateQueueName (line 236) | internal static void ValidateQueueName([InvokerParameterName] string p...
    method ValidateQueueNameInner (line 251) | private static bool ValidateQueueNameInner(string value)
    class Handler (line 265) | internal sealed class Handler : IStateHandler
      method Apply (line 267) | public void Apply(ApplyStateContext context, IWriteOnlyTransaction t...
      method Unapply (line 288) | public void Unapply(ApplyStateContext context, IWriteOnlyTransaction...

FILE: src/Hangfire.Core/States/FailedState.cs
  class FailedState (line 58) | public class FailedState : IState
    method FailedState (line 79) | public FailedState([NotNull] Exception exception)
    method FailedState (line 93) | public FailedState([NotNull] Exception exception, [CanBeNull] string s...
    method SerializeData (line 195) | public Dictionary<string, string> SerializeData()

FILE: src/Hangfire.Core/States/IApplyStateFilter.cs
  type IApplyStateFilter (line 23) | public interface IApplyStateFilter
    method OnStateApplied (line 29) | void OnStateApplied(
    method OnStateUnapplied (line 36) | void OnStateUnapplied(

FILE: src/Hangfire.Core/States/IBackgroundJobStateChanger.cs
  type IBackgroundJobStateChanger (line 18) | public interface IBackgroundJobStateChanger
    method ChangeState (line 25) | IState ChangeState(StateChangeContext context);

FILE: src/Hangfire.Core/States/IElectStateFilter.cs
  type IElectStateFilter (line 21) | public interface IElectStateFilter
    method OnStateElection (line 30) | void OnStateElection(ElectStateContext context);

FILE: src/Hangfire.Core/States/IState.cs
  type IState (line 70) | public interface IState
    method SerializeData (line 202) | [NotNull] Dictionary<string, string> SerializeData();

FILE: src/Hangfire.Core/States/IStateHandler.cs
  type IStateHandler (line 24) | public interface IStateHandler
    method Apply (line 38) | void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction);
    method Unapply (line 46) | void Unapply(ApplyStateContext context, IWriteOnlyTransaction transact...

FILE: src/Hangfire.Core/States/IStateMachine.cs
  type IStateMachine (line 23) | public interface IStateMachine
    method ApplyState (line 30) | IState ApplyState(ApplyStateContext context);

FILE: src/Hangfire.Core/States/ProcessingState.cs
  class ProcessingState (line 30) | public class ProcessingState : IState
    method ProcessingState (line 40) | internal ProcessingState(string serverId, string workerId)
    method SerializeData (line 132) | public Dictionary<string, string> SerializeData()

FILE: src/Hangfire.Core/States/ScheduledState.cs
  class ScheduledState (line 51) | public class ScheduledState : IState
    method ScheduledState (line 68) | public ScheduledState(TimeSpan enqueueIn)
    method ScheduledState (line 80) | [JsonConstructor]
    method SerializeData (line 156) | public Dictionary<string, string> SerializeData()
    class Handler (line 165) | internal sealed class Handler : IStateHandler
      method Apply (line 167) | public void Apply(ApplyStateContext context, IWriteOnlyTransaction t...
      method Unapply (line 185) | public void Unapply(ApplyStateContext context, IWriteOnlyTransaction...
      method CheckJobQueueFeatureIsSupported (line 199) | private static void CheckJobQueueFeatureIsSupported(ApplyStateContex...

FILE: src/Hangfire.Core/States/StateChangeContext.cs
  class StateChangeContext (line 25) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1068:Cance...
    method StateChangeContext (line 28) | public StateChangeContext(
    method StateChangeContext (line 37) | public StateChangeContext(
    method StateChangeContext (line 47) | public StateChangeContext(
    method StateChangeContext (line 58) | public StateChangeContext(
    method StateChangeContext (line 70) | internal StateChangeContext(
    method StateChangeContext (line 85) | internal StateChangeContext(

FILE: src/Hangfire.Core/States/StateHandlerCollection.cs
  class StateHandlerCollection (line 23) | [SuppressMessage("Naming", "CA1711:Identifiers should not have incorrect...
    method AddRange (line 30) | public void AddRange(IEnumerable<IStateHandler> handlers)
    method AddHandler (line 40) | public void AddHandler(IStateHandler handler)
    method GetHandlers (line 53) | public IEnumerable<IStateHandler> GetHandlers(string stateName)

FILE: src/Hangfire.Core/States/StateMachine.cs
  class StateMachine (line 25) | public class StateMachine : IStateMachine
    method StateMachine (line 30) | public StateMachine([NotNull] IJobFilterProvider filterProvider)
    method StateMachine (line 35) | internal StateMachine(
    method ApplyState (line 48) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Naming", "CA1725:Par...
    method InvokeOnStateElection (line 98) | private static void InvokeOnStateElection(KeyValuePair<IElectStateFilt...
    method InvokeOnStateApplied (line 111) | private static void InvokeOnStateApplied(KeyValuePair<IApplyStateFilte...
    method InvokeOnStateUnapplied (line 124) | private static void InvokeOnStateUnapplied(KeyValuePair<IApplyStateFil...
    method GetFilters (line 137) | private JobFilterInfo GetFilters(Job job)

FILE: src/Hangfire.Core/States/SucceededState.cs
  class SucceededState (line 42) | public class SucceededState : IState
    method SucceededState (line 52) | [JsonConstructor]
    method SerializeData (line 163) | public Dictionary<string, string> SerializeData()
    class Handler (line 194) | internal sealed class Handler : IStateHandler
      method Apply (line 196) | public void Apply(ApplyStateContext context, IWriteOnlyTransaction t...
      method Unapply (line 201) | public void Unapply(ApplyStateContext context, IWriteOnlyTransaction...

FILE: src/Hangfire.Core/StatisticsHistoryAttribute.cs
  class StatisticsHistoryAttribute (line 23) | public sealed class StatisticsHistoryAttribute : JobFilterAttribute, IEl...
    method StatisticsHistoryAttribute (line 25) | public StatisticsHistoryAttribute()
    method OnStateElection (line 30) | public void OnStateElection(ElectStateContext context)

FILE: src/Hangfire.Core/Storage/BackgroundServerGoneException.cs
  class BackgroundServerGoneException (line 24) | public class BackgroundServerGoneException : Exception
    method BackgroundServerGoneException (line 26) | public BackgroundServerGoneException()
    method BackgroundServerGoneException (line 37) | protected BackgroundServerGoneException(SerializationInfo info, Stream...

FILE: src/Hangfire.Core/Storage/DistributedLockTimeoutException.cs
  class DistributedLockTimeoutException (line 24) | public class DistributedLockTimeoutException : TimeoutException
    method DistributedLockTimeoutException (line 26) | public DistributedLockTimeoutException(string resource)
    method DistributedLockTimeoutException (line 41) | protected DistributedLockTimeoutException(SerializationInfo info, Stre...

FILE: src/Hangfire.Core/Storage/IFetchedJob.cs
  type IFetchedJob (line 20) | public interface IFetchedJob : IDisposable
    method RemoveFromQueue (line 24) | void RemoveFromQueue();
    method Requeue (line 25) | void Requeue();

FILE: src/Hangfire.Core/Storage/IMonitoringApi.cs
  type IMonitoringApi (line 22) | public interface IMonitoringApi
    method Queues (line 24) | IList<QueueWithTopEnqueuedJobsDto> Queues();
    method Servers (line 25) | IList<ServerDto> Servers();
    method JobDetails (line 26) | JobDetailsDto JobDetails(string jobId);
    method GetStatistics (line 27) | StatisticsDto GetStatistics();
    method EnqueuedJobs (line 29) | JobList<EnqueuedJobDto> EnqueuedJobs(string queue, int from, int perPa...
    method FetchedJobs (line 30) | JobList<FetchedJobDto> FetchedJobs(string queue, int from, int perPage);
    method ProcessingJobs (line 32) | JobList<ProcessingJobDto> ProcessingJobs(int from, int count);
    method ScheduledJobs (line 33) | JobList<ScheduledJobDto> ScheduledJobs(int from, int count);
    method SucceededJobs (line 34) | JobList<SucceededJobDto> SucceededJobs(int from, int count);
    method FailedJobs (line 35) | JobList<FailedJobDto> FailedJobs(int from, int count);
    method DeletedJobs (line 36) | JobList<DeletedJobDto> DeletedJobs(int from, int count);
    method ScheduledCount (line 38) | long ScheduledCount();
    method EnqueuedCount (line 39) | long EnqueuedCount(string queue);
    method FetchedCount (line 40) | long FetchedCount(string queue);
    method FailedCount (line 41) | long FailedCount();
    method ProcessingCount (line 42) | long ProcessingCount();
    method SucceededListCount (line 44) | long SucceededListCount();
    method DeletedListCount (line 45) | long DeletedListCount();
    method SucceededByDatesCount (line 47) | IDictionary<DateTime, long> SucceededByDatesCount();
    method FailedByDatesCount (line 48) | IDictionary<DateTime, long> FailedByDatesCount();
    method HourlySucceededJobs (line 49) | IDictionary<DateTime, long> HourlySucceededJobs();
    method HourlyFailedJobs (line 50) | IDictionary<DateTime, long> HourlyFailedJobs();

FILE: src/Hangfire.Core/Storage/IStorageConnection.cs
  type IStorageConnection (line 25) | public interface IStorageConnection : IDisposable
    method CreateWriteTransaction (line 27) | IWriteOnlyTransaction CreateWriteTransaction();
    method AcquireDistributedLock (line 28) | IDisposable AcquireDistributedLock(string resource, TimeSpan timeout);
    method CreateExpiredJob (line 30) | string CreateExpiredJob(
    method FetchNextJob (line 36) | IFetchedJob FetchNextJob(string[] queues, CancellationToken cancellati...
    method SetJobParameter (line 38) | void SetJobParameter(string id, string name, string value);
    method GetJobParameter (line 39) | string GetJobParameter(string id, string name);
    method GetJobData (line 41) | [CanBeNull]
    method GetStateData (line 44) | [CanBeNull]
    method AnnounceServer (line 47) | void AnnounceServer(string serverId, ServerContext context);
    method RemoveServer (line 48) | void RemoveServer(string serverId);
    method Heartbeat (line 49) | void Heartbeat(string serverId);
    method RemoveTimedOutServers (line 50) | int RemoveTimedOutServers(TimeSpan timeOut);
    method GetAllItemsFromSet (line 54) | [NotNull]
    method GetFirstByLowestScoreFromSet (line 57) | string GetFirstByLowestScoreFromSet(string key, double fromScore, doub...
    method SetRangeInHash (line 61) | void SetRangeInHash([NotNull] string key, [NotNull] IEnumerable<KeyVal...
    method GetAllEntriesFromHash (line 63) | [CanBeNull]

FILE: src/Hangfire.Core/Storage/IWriteOnlyTransaction.cs
  type IWriteOnlyTransaction (line 23) | public interface IWriteOnlyTransaction : IDisposable
    method ExpireJob (line 26) | void ExpireJob([NotNull] string jobId, TimeSpan expireIn);
    method PersistJob (line 27) | void PersistJob([NotNull] string jobId);
    method SetJobState (line 28) | void SetJobState([NotNull] string jobId, [NotNull] IState state);
    method AddJobState (line 29) | void AddJobState([NotNull] string jobId, [NotNull] IState state);
    method AddToQueue (line 32) | void AddToQueue([NotNull] string queue, [NotNull] string jobId);
    method IncrementCounter (line 35) | void IncrementCounter([NotNull] string key);
    method IncrementCounter (line 36) | void IncrementCounter([NotNull] string key, TimeSpan expireIn);
    method DecrementCounter (line 37) | void DecrementCounter([NotNull] string key);
    method DecrementCounter (line 38) | void DecrementCounter([NotNull] string key, TimeSpan expireIn);
    method AddToSet (line 41) | void AddToSet([NotNull] string key, [NotNull] string value);
    method AddToSet (line 42) | void AddToSet([NotNull] string key, [NotNull] string value, double sco...
    method RemoveFromSet (line 43) | void RemoveFromSet([NotNull] string key, [NotNull] string value);
    method InsertToList (line 46) | void InsertToList([NotNull] string key, [NotNull] string value);
    method RemoveFromList (line 47) | void RemoveFromList([NotNull] string key, [NotNull] string value);
    method TrimList (line 48) | void TrimList([NotNull] string key, int keepStartingFrom, int keepEndi...
    method SetRangeInHash (line 51) | void SetRangeInHash([NotNull] string key, [NotNull] IEnumerable<KeyVal...
    method RemoveHash (line 52) | void RemoveHash([NotNull] string key);
    method Commit (line 54) | void Commit();

FILE: src/Hangfire.Core/Storage/InvocationData.cs
  class InvocationData (line 34) | public class InvocationData
    method SetTypeResolver (line 47) | [Obsolete("Please use IGlobalConfiguration.UseTypeResolver instead. Wi...
    method SetTypeSerializer (line 53) | [Obsolete("Please use IGlobalConfiguration.UseTypeSerializer instead. ...
    method InvocationData (line 59) | public InvocationData(string type, string method, string parameterType...
    method InvocationData (line 64) | [JsonConstructor]
    method Deserialize (line 82) | [Obsolete("Please use DeserializeJob() method instead. Will be removed...
    method Serialize (line 88) | [Obsolete("Please use SerializeJob(Job) method instead. Will be remove...
    method DeserializeJob (line 94) | public Job DeserializeJob()
    method SerializeJob (line 122) | public static InvocationData SerializeJob(Job job)
    method DeserializePayload (line 139) | public static InvocationData DeserializePayload(string payload)
    method SerializePayload (line 183) | public string SerializePayload(bool excludeArguments = false)
    method DeserializeParameterTypesArray (line 205) | private static string[] DeserializeParameterTypesArray(Func<Type, stri...
    method SerializeArguments (line 229) | internal static string[] SerializeArguments(MethodInfo methodInfo, IRe...
    method DeserializeArguments (line 278) | internal static object[] DeserializeArguments(MethodInfo methodInfo, s...
    method CachedSerializeMethod (line 309) | private static void CachedSerializeMethod(
    method CachedDeserializeMethod (line 331) | private static void CachedDeserializeMethod(
    method DeserializeArgument (line 361) | private static object DeserializeArgument(string argument, Type type)
    method ParseDateTimeArgument (line 411) | internal static bool ParseDateTimeArgument(string argument, out DateTi...
    class JobPayload (line 433) | private sealed class JobPayload
    type MethodDeserializerCacheKey (line 451) | private readonly record struct MethodDeserializerCacheKey
    type MethodDeserializerCacheValue (line 459) | private readonly record struct MethodDeserializerCacheValue
    type MethodSerializerCacheKey (line 465) | private readonly record struct MethodSerializerCacheKey
    type MethodSerializerCacheValue (line 472) | private readonly record struct MethodSerializerCacheValue

FILE: src/Hangfire.Core/Storage/JobData.cs
  class JobData (line 22) | public class JobData
    method EnsureLoaded (line 32) | public void EnsureLoaded()

FILE: src/Hangfire.Core/Storage/JobStorageConnection.cs
  class JobStorageConnection (line 26) | public abstract class JobStorageConnection : IStorageConnection
    method Dispose (line 28) | public virtual void Dispose()
    method CreateWriteTransaction (line 34) | public abstract IWriteOnlyTransaction CreateWriteTransaction();
    method AcquireDistributedLock (line 35) | public abstract IDisposable AcquireDistributedLock(string resource, Ti...
    method CreateExpiredJob (line 38) | public abstract string CreateExpiredJob(Job job, IDictionary<string, s...
    method FetchNextJob (line 39) | public abstract IFetchedJob FetchNextJob(string[] queues, Cancellation...
    method SetJobParameter (line 40) | public abstract void SetJobParameter(string id, string name, string va...
    method GetJobParameter (line 41) | public abstract string GetJobParameter(string id, string name);
    method GetJobData (line 42) | public abstract JobData GetJobData(string jobId);
    method GetStateData (line 43) | public abstract StateData GetStateData(string jobId);
    method AnnounceServer (line 46) | public abstract void AnnounceServer(string serverId, ServerContext con...
    method RemoveServer (line 47) | public abstract void RemoveServer(string serverId);
    method Heartbeat (line 48) | public abstract void Heartbeat(string serverId);
    method RemoveTimedOutServers (line 49) | public abstract int RemoveTimedOutServers(TimeSpan timeOut);
    method GetAllItemsFromSet (line 52) | public abstract HashSet<string> GetAllItemsFromSet(string key);
    method GetFirstByLowestScoreFromSet (line 53) | public abstract string GetFirstByLowestScoreFromSet(string key, double...
    method GetFirstByLowestScoreFromSet (line 55) | public virtual List<string> GetFirstByLowestScoreFromSet(string key, d...
    method GetSetCount (line 60) | public virtual long GetSetCount([NotNull] string key)
    method GetSetCount (line 65) | public virtual long GetSetCount([NotNull] IEnumerable<string> keys, in...
    method GetSetContains (line 70) | public virtual bool GetSetContains([NotNull] string key, [NotNull] str...
    method GetRangeFromSet (line 75) | public virtual List<string> GetRangeFromSet([NotNull] string key, int ...
    method GetSetTtl (line 80) | public virtual TimeSpan GetSetTtl([NotNull] string key)
    method SetRangeInHash (line 86) | public abstract void SetRangeInHash(string key, IEnumerable<KeyValuePa...
    method GetAllEntriesFromHash (line 87) | public abstract Dictionary<string, string> GetAllEntriesFromHash(strin...
    method GetValueFromHash (line 89) | public virtual string GetValueFromHash([NotNull] string key, [NotNull]...
    method GetHashCount (line 94) | public virtual long GetHashCount([NotNull] string key)
    method GetHashTtl (line 99) | public virtual TimeSpan GetHashTtl([NotNull] string key)
    method GetListCount (line 105) | public virtual long GetListCount([NotNull] string key)
    method GetAllItemsFromList (line 110) | public virtual List<string> GetAllItemsFromList([NotNull] string key)
    method GetRangeFromList (line 115) | public virtual List<string> GetRangeFromList([NotNull] string key, int...
    method GetListTtl (line 120) | public virtual TimeSpan GetListTtl([NotNull] string key)
    method GetCounter (line 126) | public virtual long GetCounter([NotNull] string key)
    method GetUtcDateTime (line 131) | public virtual DateTime GetUtcDateTime()

FILE: src/Hangfire.Core/Storage/JobStorageFeatures.cs
  class JobStorageFeatures (line 23) | public static class JobStorageFeatures
    class Connection (line 31) | public static class Connection
    class Transaction (line 40) | public static class Transaction
      method RemoveFromQueue (line 49) | public static string RemoveFromQueue(Type fetchedJobType)
    class Monitoring (line
Condensed preview — 595 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,728K chars).
[
  {
    "path": ".editorconfig",
    "chars": 63,
    "preview": "root = true\n\n[*.cs,*.ps1]\nindent_style = space\nindent_size = 4\n"
  },
  {
    "path": ".gitattributes",
    "chars": 946,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Custom for Visual Studio\n*.cs     diff=csharp text\n"
  },
  {
    "path": ".gitignore",
    "chars": 2882,
    "preview": "#################\n## IDEA Rider\n#################\n.idea\n.idea.*\n\n#################\n## Eclipse\n#################\n\n*.pydev"
  },
  {
    "path": ".nuget/packages.config",
    "chars": 256,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Hangfire.Build\" version=\"0.5.0\" />\n  <package id=\"ILRe"
  },
  {
    "path": ".nuget/packages.lock.json",
    "chars": 1042,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"Any,Version=v0.0\": {\n      \"Hangfire.Build\": {\n        \"type\": \"Direct\",\n    "
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2076,
    "preview": "# File an Issue\n\nIf you have a question rather than an issue, please post it to the [Hangfire Stack \nOverflow tag](https"
  },
  {
    "path": "COPYING",
    "chars": 35147,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
  },
  {
    "path": "COPYING.LESSER",
    "chars": 7651,
    "preview": "                   GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007"
  },
  {
    "path": "Directory.Build.props",
    "chars": 350,
    "preview": "<Project>\n    <PropertyGroup>\n        <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>\n        <DisableIm"
  },
  {
    "path": "Hangfire.sln",
    "chars": 8117,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 15\r\nVisualStudioVersion = 15.0.28307.136"
  },
  {
    "path": "Hangfire.sln.DotSettings",
    "chars": 3093,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "LICENSE.md",
    "chars": 1254,
    "preview": "License\n========\n\nCopyright © 2013-2026 Hangfire OÜ.\n\nHangfire software is an open-source software that is multi-license"
  },
  {
    "path": "LICENSE_ROYALTYFREE",
    "chars": 12299,
    "preview": "Royalty-free End-user License Agreement\n=======================================\n\nTHIS LICENSE AGREEMENT DESCRIBES YOUR R"
  },
  {
    "path": "LICENSE_STANDARD",
    "chars": 12414,
    "preview": "Standard End-user License Agreement\n===================================\n\nTHIS LICENSE AGREEMENT DESCRIBES YOUR RIGHTS WI"
  },
  {
    "path": "NOTICES",
    "chars": 14684,
    "preview": "Third Party Software Notices\n============================\n\nHangfire products use software provided by third parties, inc"
  },
  {
    "path": "NuGet.config",
    "chars": 1140,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <config>\n    <add key=\"signatureValidationMode\" value=\"require\""
  },
  {
    "path": "README.md",
    "chars": 9452,
    "preview": "Hangfire \n=========\n\n[![Official Site](https://img.shields.io/badge/site-hangfire.io-blue.svg)](https://www.hangfire.io)"
  },
  {
    "path": "SECURITY.md",
    "chars": 404,
    "preview": "# Reporting security issues \n\nIn order to give the community time to respond and upgrade we strongly urge you report all"
  },
  {
    "path": "appveyor.yml",
    "chars": 2331,
    "preview": "# AppVeyor CI build file, https://ci.appveyor.com/project/odinserj/hangfire\n\n# Notes:\n#   - Minimal appveyor.yml file is"
  },
  {
    "path": "build.bat",
    "chars": 375,
    "preview": "@echo off\n.nuget\\NuGet.exe restore .nuget\\packages.config -OutputDirectory packages -UseLockFile -LockedMode -NoCache ||"
  },
  {
    "path": "build.sh",
    "chars": 560,
    "preview": "#!/bin/bash\n\nset -e;\nexport Hangfire_SqlServer_ConnectionStringTemplate=\"Server=tcp:127.0.0.1,1433;Database={0};User Id="
  },
  {
    "path": "coverity-scan.ps1",
    "chars": 2150,
    "preview": "cov-configure --cs\ncov-build.exe --dir cov-int build.bat compile\n\n# Compress results.\n\"Compressing Coverity results...\"\n"
  },
  {
    "path": "nuspecs/Hangfire.AspNetCore.nuspec",
    "chars": 5017,
    "preview": "<?xml version=\"1.0\"?>\n<package>\n  <metadata>\n    <id>Hangfire.AspNetCore</id>\n    <version>%version%</version>\n    <titl"
  },
  {
    "path": "nuspecs/Hangfire.Core.nuspec",
    "chars": 22420,
    "preview": "<?xml version=\"1.0\"?>\n<package>\n  <metadata>\n    <id>Hangfire.Core</id>\n    <version>%version%</version>\n    <title>Hang"
  },
  {
    "path": "nuspecs/Hangfire.NetCore.nuspec",
    "chars": 5277,
    "preview": "<?xml version=\"1.0\"?>\n<package>\n  <metadata>\n    <id>Hangfire.NetCore</id>\n    <version>%version%</version>\n    <title>H"
  },
  {
    "path": "nuspecs/Hangfire.SqlServer.MSMQ.nuspec",
    "chars": 2594,
    "preview": "<?xml version=\"1.0\"?>\n<package>\n  <metadata>\n    <id>Hangfire.SqlServer.MSMQ</id>\n    <version>%version%</version>\n    <"
  },
  {
    "path": "nuspecs/Hangfire.SqlServer.nuspec",
    "chars": 8805,
    "preview": "<?xml version=\"1.0\"?>\n<package>\n  <metadata>\n    <id>Hangfire.SqlServer</id>\n    <version>%version%</version>\n    <title"
  },
  {
    "path": "nuspecs/Hangfire.nuspec",
    "chars": 31042,
    "preview": "<?xml version=\"1.0\"?>\n<package>\n  <metadata>\n    <id>Hangfire</id>\n    <version>%version%</version>\n    <title>Hangfire<"
  },
  {
    "path": "psake-project.ps1",
    "chars": 4023,
    "preview": "Include \"packages\\Hangfire.Build.0.5.0\\tools\\psake-common.ps1\"\n\nTask Default -Depends Pack\n\nTask Merge -Depends Compile "
  },
  {
    "path": "samples/ConsoleSample/ConsoleSample.csproj",
    "chars": 992,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n  <PropertyGroup>\r\n    <OutputType>Exe</OutputType>\r\n    <TargetFramework>net451</"
  },
  {
    "path": "samples/ConsoleSample/GenericServices.cs",
    "chars": 239,
    "preview": "using System;\n\nnamespace ConsoleSample\n{\n    public class GenericServices<TType>\n    {\n        public void Method<TMeth"
  },
  {
    "path": "samples/ConsoleSample/NewFeatures.cs",
    "chars": 2480,
    "preview": "using System;\nusing Hangfire;\n\nnamespace ConsoleSample\n{\n    public static class NewFeatures\n    {\n        [AutomaticRe"
  },
  {
    "path": "samples/ConsoleSample/Program.cs",
    "chars": 11502,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Threading;\nusing System.Thread"
  },
  {
    "path": "samples/ConsoleSample/Services.cs",
    "chars": 4113,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.IO;\nusing System.Threading;\nu"
  },
  {
    "path": "samples/ConsoleSample/Startup.cs",
    "chars": 521,
    "preview": "using System;\nusing Hangfire;\nusing Owin;\n\nnamespace ConsoleSample\n{\n    public class Startup\n    {\n        public void"
  },
  {
    "path": "samples/ConsoleSample/app.config",
    "chars": 152,
    "preview": "<?xml version=\"1.0\"?>\n<configuration>\n  <startup>\n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5\"/"
  },
  {
    "path": "samples/ConsoleSample/packages.lock.json",
    "chars": 4103,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \".NETFramework,Version=v4.5.1\": {\n      \"Microsoft.NETFramework.ReferenceAssem"
  },
  {
    "path": "samples/NetCoreSample/NetCoreSample.csproj",
    "chars": 810,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n\r\n  <PropertyGroup>\r\n    <OutputType>Exe</OutputType>\r\n    <TargetFramework>net6.0</"
  },
  {
    "path": "samples/NetCoreSample/Program.cs",
    "chars": 6983,
    "preview": "using System;\nusing System.Data;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Hangfire;\nusing Hangfire.A"
  },
  {
    "path": "samples/NetCoreSample/packages.lock.json",
    "chars": 16980,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \"net6.0\": {\n      \"Microsoft.Extensions.Hosting\": {\n        \"type\": \"Direct\",\n"
  },
  {
    "path": "src/Directory.Build.props",
    "chars": 1663,
    "preview": "<Project>\n    <Import Project=\"$([MSBuild]::GetPathOfFileAbove('Directory.Build.props', '$(MSBuildThisFileDirectory)../'"
  },
  {
    "path": "src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardContext.cs",
    "chars": 2786,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardContextExtensions.cs",
    "chars": 1425,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardMiddleware.cs",
    "chars": 5260,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardRequest.cs",
    "chars": 1911,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.AspNetCore/Dashboard/AspNetCoreDashboardResponse.cs",
    "chars": 2315,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.AspNetCore/Hangfire.AspNetCore.csproj",
    "chars": 1404,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <TargetFrameworks>net451;net461;netstandard1.3;netstandard2.0"
  },
  {
    "path": "src/Hangfire.AspNetCore/HangfireApplicationBuilderExtensions.cs",
    "chars": 5329,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.AspNetCore/HangfireEndpointRouteBuilderExtensions.cs",
    "chars": 4405,
    "preview": "// This file is part of Hangfire. Copyright © 2019 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.AspNetCore/Properties/AssemblyInfo.cs",
    "chars": 145,
    "preview": "using System.Reflection;\n\n[assembly: AssemblyTitle(\"Hangfire.AspNetCore\")]\n[assembly: AssemblyDescription(\"ASP.NET Core"
  },
  {
    "path": "src/Hangfire.AspNetCore/packages.lock.json",
    "chars": 93412,
    "preview": "{\n  \"version\": 1,\n  \"dependencies\": {\n    \".NETCoreApp,Version=v3.0\": {\n      \"Microsoft.CodeAnalysis.NetAnalyzers\": {\n "
  },
  {
    "path": "src/Hangfire.Core/AppBuilderExtensions.cs",
    "chars": 24309,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/App_Packages/LibLog.1.4/LibLog.cs",
    "chars": 61143,
    "preview": "//===============================================================================\n// LibLog\n//\n// https://github.com/dam"
  },
  {
    "path": "src/Hangfire.Core/App_Packages/StackTraceFormatter/StackTraceFormatter.cs",
    "chars": 7312,
    "preview": "#region Copyright (c) 2011 Atif Aziz. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"Li"
  },
  {
    "path": "src/Hangfire.Core/App_Packages/StackTraceParser/StackTraceParser.cs",
    "chars": 6115,
    "preview": "#region Copyright (c) 2011 Atif Aziz. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"Li"
  },
  {
    "path": "src/Hangfire.Core/AttemptsExceededAction.cs",
    "chars": 1307,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/AutomaticRetryAttribute.cs",
    "chars": 15785,
    "preview": "// This file is part of Hangfire. Copyright © 2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/BackgroundJob.Instance.cs",
    "chars": 1820,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/BackgroundJob.cs",
    "chars": 43083,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/BackgroundJobClient.cs",
    "chars": 8058,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/BackgroundJobClientException.cs",
    "chars": 2473,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/BackgroundJobClientExtensions.cs",
    "chars": 71891,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/BackgroundJobServer.cs",
    "chars": 10660,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/BackgroundJobServerOptions.cs",
    "chars": 7951,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistrib"
  },
  {
    "path": "src/Hangfire.Core/CaptureCultureAttribute.cs",
    "chars": 7272,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/BackgroundJobFactory.cs",
    "chars": 8177,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/ClientExceptionContext.cs",
    "chars": 1732,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/CoreBackgroundJobFactory.cs",
    "chars": 8948,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/CreateContext.cs",
    "chars": 4083,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/CreatedContext.cs",
    "chars": 2858,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/CreatingContext.cs",
    "chars": 3440,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/IBackgroundJobFactory.cs",
    "chars": 1456,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistrib"
  },
  {
    "path": "src/Hangfire.Core/Client/IClientExceptionFilter.cs",
    "chars": 1175,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Client/IClientFilter.cs",
    "chars": 1308,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/CachedExpressionCompiler.cs",
    "chars": 1705,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/CancellationTokenExtentions.cs",
    "chars": 5364,
    "preview": "// This file is part of Hangfire. Copyright © 2018 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/BinaryExpressionFingerprint.cs",
    "chars": 1862,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/CachedExpressionCompiler.cs",
    "chars": 6561,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/ConditionalExpressionFingerprint.cs",
    "chars": 1355,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/ConstantExpressionFingerprint.cs",
    "chars": 1631,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/DefaultExpressionFingerprint.cs",
    "chars": 1316,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/ExpressionFingerprint.cs",
    "chars": 1604,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/ExpressionFingerprintChain.cs",
    "chars": 3861,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/FingerprintingExpressionVisitor.cs",
    "chars": 9151,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/HashCodeCombiner.cs",
    "chars": 1462,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/Hoisted.cs",
    "chars": 322,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/HoistingExpressionVisitor.cs",
    "chars": 1790,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/IndexExpressionFingerprint.cs",
    "chars": 1891,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/LambdaExpressionFingerprint.cs",
    "chars": 1343,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/MemberExpressionFingerprint.cs",
    "chars": 1662,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/MethodCallExpressionFingerprint.cs",
    "chars": 1907,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/ParameterExpressionFingerprint.cs",
    "chars": 1728,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/TypeBinaryExpressionFingerprint.cs",
    "chars": 1664,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/ExpressionUtil/UnaryExpressionFingerprint.cs",
    "chars": 1906,
    "preview": "// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license"
  },
  {
    "path": "src/Hangfire.Core/Common/IJobFilter.cs",
    "chars": 1282,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/IJobFilterProvider.cs",
    "chars": 1251,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/Job.cs",
    "chars": 26326,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilter.cs",
    "chars": 2402,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilterAttribute.cs",
    "chars": 2440,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilterAttributeFilterProvider.cs",
    "chars": 2886,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilterCollection.cs",
    "chars": 4980,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilterInfo.cs",
    "chars": 6077,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilterProviderCollection.cs",
    "chars": 4207,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilterProviders.cs",
    "chars": 1366,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobFilterScope.cs",
    "chars": 4379,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobHelper.cs",
    "chars": 4257,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/JobLoadException.cs",
    "chars": 2037,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/LanguagePolyfills.cs",
    "chars": 1276,
    "preview": "using System.ComponentModel;\n\nnamespace System.Runtime.CompilerServices\n{\n#if !NET5_0_OR_GREATER\n\n    [EditorBrowsable("
  },
  {
    "path": "src/Hangfire.Core/Common/MethodInfoExtensions.cs",
    "chars": 1281,
    "preview": "// This file is part of Hangfire. Copyright © 2017 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Common/ReflectedAttributeCache.cs",
    "chars": 2408,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Common/SerializationHelper.cs",
    "chars": 12813,
    "preview": "// This file is part of Hangfire. Copyright © 2019 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Common/ShallowExceptionHelper.cs",
    "chars": 3456,
    "preview": "// This file is part of Hangfire. Copyright © 2017 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Common/TypeExtensions.cs",
    "chars": 8465,
    "preview": "// This file is part of Hangfire. Copyright © 2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Common/TypeHelper.cs",
    "chars": 10475,
    "preview": "// This file is part of Hangfire. Copyright © 2019 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.Core/Common/TypeHelperSerializationBinder.cs",
    "chars": 2194,
    "preview": "// This file is part of Hangfire. Copyright © 2022 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.Core/ContinuationsSupportAttribute.cs",
    "chars": 16155,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistrib"
  },
  {
    "path": "src/Hangfire.Core/Cron.cs",
    "chars": 12573,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/BatchCommandDispatcher.cs",
    "chars": 2116,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/CombinedResourceDispatcher.cs",
    "chars": 1907,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/CommandDispatcher.cs",
    "chars": 2250,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/css/hangfire-dark.css",
    "chars": 16664,
    "preview": "@media (prefers-color-scheme: dark) {\n    html {\n        color-scheme: dark;\n    }\n\n    /* Common */\n    .page-header {\n"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/css/hangfire.css",
    "chars": 12774,
    "preview": "/* Sticky footer styles\n-------------------------------------------------- */\n\nhtml, body {\n  height: 100%;\n  /* The htm"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/js/hangfire.js",
    "chars": 24249,
    "preview": "(function (hangfire) {\n    var changeDatasetColorScheme = function(newColorScheme) {\n        this._chart.data.datasets[0"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.Designer.cs",
    "chars": 51938,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.ca.resx",
    "chars": 21633,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.de.resx",
    "chars": 21459,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.es.resx",
    "chars": 21703,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.fa.resx",
    "chars": 21361,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.fr.resx",
    "chars": 23319,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.nb.resx",
    "chars": 23927,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!--\n    Microsoft ResX Schema\n\n    Version 2.0\n\n    The primary goals o"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.nl.resx",
    "chars": 23010,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.pt-BR.resx",
    "chars": 23318,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.pt-PT.resx",
    "chars": 24819,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    T"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.pt.resx",
    "chars": 24823,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n  <!-- \r\n    Microsoft ResX Schema \r\n    \r\n    Version 2.0\r\n    \r\n    T"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.resx",
    "chars": 23705,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.sv.resx",
    "chars": 23906,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.tr-TR.resx",
    "chars": 22744,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.zh-TW.resx",
    "chars": 18999,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Content/resx/Strings.zh.resx",
    "chars": 19694,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prima"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/DashboardContext.cs",
    "chars": 5230,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/DashboardMetric.cs",
    "chars": 1294,
    "preview": "// This file is part of Hangfire. Copyright © 2015 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/DashboardMetrics.cs",
    "chars": 8093,
    "preview": "// This file is part of Hangfire. Copyright © 2015 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/DashboardRequest.cs",
    "chars": 3385,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/DashboardResponse.cs",
    "chars": 2854,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/DashboardRoutes.cs",
    "chars": 14715,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistrib"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/EmbeddedResourceDispatcher.cs",
    "chars": 2643,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/HtmlHelper.cs",
    "chars": 13455,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/IDashboardAsyncAuthorizationFilter.cs",
    "chars": 942,
    "preview": "// This file is part of Hangfire. Copyright © 2021 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/IDashboardAuthorizationFilter.cs",
    "chars": 896,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/IDashboardDispatcher.cs",
    "chars": 2080,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/JobDetailsRenderer.cs",
    "chars": 2304,
    "preview": "// This file is part of Hangfire.\n// Copyright © 2020 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribut"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/JobHistoryRenderer.cs",
    "chars": 13965,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/JobMethodCallRenderer.cs",
    "chars": 17616,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/JobsSidebarMenu.cs",
    "chars": 3231,
    "preview": "// This file is part of Hangfire. Copyright © 2015 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/JsonStats.cs",
    "chars": 2225,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/LocalRequestsOnlyAuthorizationFilter.cs",
    "chars": 2662,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/MenuItem.cs",
    "chars": 1502,
    "preview": "// This file is part of Hangfire. Copyright © 2015 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Metric.cs",
    "chars": 1982,
    "preview": "// This file is part of Hangfire. Copyright © 2015 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/NavigationMenu.cs",
    "chars": 2352,
    "preview": "// This file is part of Hangfire. Copyright © 2015 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute i"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/NonEscapedString.cs",
    "chars": 1021,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Owin/IOwinDashboardAntiforgery.cs",
    "chars": 1016,
    "preview": "// This file is part of Hangfire. Copyright © 2018 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Owin/MiddlewareExtensions.cs",
    "chars": 5620,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Owin/OwinDashboardContext.cs",
    "chars": 1466,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Owin/OwinDashboardContextExtensions.cs",
    "chars": 1410,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Owin/OwinDashboardRequest.cs",
    "chars": 2725,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Owin/OwinDashboardResponse.cs",
    "chars": 1951,
    "preview": "// This file is part of Hangfire. Copyright © 2016 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistribute "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pager.cs",
    "chars": 5612,
    "preview": "// This file is part of Hangfire. Copyright © 2013-2014 Hangfire OÜ.\n// \n// Hangfire is free software: you can redistri"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/AwaitingJobsPage.cshtml",
    "chars": 11370,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: true *@\n@using System\n@using System.Collections.Ge"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/AwaitingJobsPage.cshtml.cs",
    "chars": 26054,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/DeletedJobsPage.cshtml",
    "chars": 7290,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using Hangfire\n@using Hangfire.Dashboard\n"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/DeletedJobsPage.cshtml.cs",
    "chars": 18628,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/EnqueuedJobsPage.cs",
    "chars": 218,
    "preview": "namespace Hangfire.Dashboard.Pages\n{\n    partial class EnqueuedJobsPage\n    {\n        public EnqueuedJobsPage(string qu"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/EnqueuedJobsPage.cshtml",
    "chars": 5537,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System.Collections\n@using System.Co"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/EnqueuedJobsPage.cshtml.cs",
    "chars": 16130,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/FailedJobsPage.cshtml",
    "chars": 8250,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System\n@using Hangfire\n@using Hangf"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/FailedJobsPage.cshtml.cs",
    "chars": 22395,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/FetchedJobsPage.cs",
    "chars": 216,
    "preview": "namespace Hangfire.Dashboard.Pages\n{\n    partial class FetchedJobsPage\n    {\n        public FetchedJobsPage(string queu"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/FetchedJobsPage.cshtml",
    "chars": 5428,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System.Collections\n@using System.Co"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/FetchedJobsPage.cshtml.cs",
    "chars": 15893,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/HomePage.cs",
    "chars": 207,
    "preview": "using System.Collections.Generic;\n\nnamespace Hangfire.Dashboard.Pages\n{\n    partial class HomePage\n    {\n        public"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/HomePage.cshtml",
    "chars": 3654,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System\n@using System.Collections.Ge"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/HomePage.cshtml.cs",
    "chars": 10929,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/JobDetailsPage.cs",
    "chars": 244,
    "preview": "using Hangfire.Annotations;\n\nnamespace Hangfire.Dashboard.Pages\n{\n    partial class JobDetailsPage\n    {\n        public"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/JobDetailsPage.cshtml",
    "chars": 11914,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System\n@using System.Collections.Ge"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/JobDetailsPage.cshtml.cs",
    "chars": 32691,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/LayoutPage.cs",
    "chars": 206,
    "preview": "namespace Hangfire.Dashboard.Pages\n{\n    partial class LayoutPage\n    {\n        public LayoutPage(string title)\n       "
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/LayoutPage.cshtml",
    "chars": 5887,
    "preview": "@* Generator: Template TypeVisibility: Public GeneratePrettyNames: True *@\n@using System\n@using System.Globalization\n@u"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/LayoutPage.cshtml.cs",
    "chars": 16798,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/ProcessingJobsPage.cshtml",
    "chars": 6778,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System\n@using System.Linq\n@using Ha"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/ProcessingJobsPage.cshtml.cs",
    "chars": 19007,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/QueuesPage.cshtml",
    "chars": 6481,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System.Linq\n@using Hangfire.Dashboa"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/QueuesPage.cshtml.cs",
    "chars": 17019,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/RecurringJobsPage.cshtml",
    "chars": 15598,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: true *@\n@using System\n@using System.Collections.Ge"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/RecurringJobsPage.cshtml.cs",
    "chars": 37602,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/RetriesPage.cshtml",
    "chars": 7184,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System\n@using System.Collections.Ge"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/RetriesPage.cshtml.cs",
    "chars": 18378,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/ScheduledJobsPage.cshtml",
    "chars": 5760,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using Hangfire\n@using Hangfire.Dashboard\n"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/ScheduledJobsPage.cshtml.cs",
    "chars": 16692,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/ServersPage.cshtml",
    "chars": 3770,
    "preview": "@* Generator: Template TypeVisibility: Internal GeneratePrettyNames: True *@\n@using System\n@using System.Linq\n@using Ha"
  },
  {
    "path": "src/Hangfire.Core/Dashboard/Pages/ServersPage.cshtml.cs",
    "chars": 11448,
    "preview": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-g"
  }
]

// ... and 395 more files (download for full content)

About this extraction

This page contains the full source code of the HangfireIO/Hangfire GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 595 files (4.3 MB), approximately 1.2M tokens, and a symbol index with 4610 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!