SimpleInjector: Injeção não funciona com MVC 4 ASP.NET Web API

Eu tenho essa configuração:

public static void Initialize(ISessionFactory factory)
{
    var container = new Container();
    InitializeContainer(container, factory);
    container.RegisterMvcControllers(
        Assembly.GetExecutingAssembly());
    container.RegisterMvcAttributeFilterProvider();
    container.Verify();
    DependencyResolver.SetResolver(
        new SimpleInjectorDependencyResolver(container));
}

private static void InitializeContainer(
    Container container, ISessionFactory factory)
{
    container.RegisterPerWebRequest<ISession>(
        () => factory.OpenSession(), true);
}

O método Initialize é chamado emApplication_Start:

public class WebApiApplication : HttpApplication
{
    protected void Application_Start()
    {
        SimpleInjectorInitializer.Initialize(
            new NHibernateHelper(
                Assembly.GetCallingAssembly(), 
                this.Server.MapPath("/"))
                .SessionFactory);

        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

Mas quando eu tento chamar a ação do controlador eu recebo umArgumentException:

Tipo 'PositionReportApi.Controllers.PositionsController' não tem um construtor padrão

Rastreamento de pilha:

em System.Linq.Expressions.Expression.New (Type type) em System.Web.Http.Internal.TypeActivator.Create [TBase] (Digite instanceType) em System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, tipo controllerType)

Não consigo registrar umISession.

Como faço para registrar um ISession que é criado por uma fábrica?

questionAnswers(1)

yourAnswerToTheQuestion