Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build status

Hangfire background job activator based on MEF IoC Container. It allows you to use instance methods of classes that define parametrised constructors:

public class EmailService
	private DbContext _context;
    private IEmailSender _sender;
	public EmailService(DbContext context, IEmailSender sender)
		_context = context;
		_sender = sender;
	public void Send(int userId, string message)
		var user = _context.Users.Get(userId);
		_sender.Send(user.Email, message);

// Somewhere in the code
BackgroundJob.Enqueue<EmailService>(x => x.Send(1, "Hello, world!"));

Improve the testability of your jobs without static factories!


Hangfire.MEF is available as a NuGet Package. Type the following command into NuGet Package Manager Console window to install it:

Install-Package Hangfire.MEF


The package provides an extension method for OWIN bootstrapper:

AggregateCatalog catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly()));
// add other assembly, directory, aggregate catalogs etc. here
var container = new CompositionContainer(catalog);

app.UseHangfire(config =>

In order to use the library outside of web application, set the static JobActivator.Current property:

var container = new CompositionContainer();
JobActivator.Current = new MEFJobActivator(container);

HTTP Request warnings

Services registered with InRequestScope() directive will be unavailable during job activation, you should re-register these services without this hint.

HttpContext.Current is also not available during the job performance. Don't use it!


This project and this readme is based on the Hangfire.Ninject project by Sergey Odinokov Many thanks go out to him for his great work on the Hangfire project as well.

You can’t perform that action at this time.